/* A Bison parser, made by GNU Bison 3.5.1.  */

/* Bison implementation for Yacc-like parsers in C

   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
   Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   special exception, which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* C LALR(1) parser skeleton written by Richard Stallman, by
   simplifying the original so-called "semantic" parser.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

/* Undocumented macros, especially those whose name start with YY_,
   are private implementation details.  Do not rely on them.  */

/* Identify Bison output.  */
#define YYBISON 1

/* Bison version.  */
#define YYBISON_VERSION "3.5.1"

/* Skeleton name.  */
#define YYSKELETON_NAME "yacc.c"

/* Pure parsers.  */
#define YYPURE 1

/* Push parsers.  */
#define YYPUSH 0

/* Pull parsers.  */
#define YYPULL 1


/* Substitute the variable and function names.  */
#define yyparse         sql_parse
#define yylex           sql_lex
#define yyerror         sql_error
#define yydebug         sql_debug
#define yynerrs         sql_nerrs

/* First part of user prologue.  */
#line 1 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"

// Copyright (C) Kumo inc. and its affiliates.
// Author: Jeff.li lijippy@163.com
// All rights reserved.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
//


#include <stdio.h>
#include <iostream>
#define YY_DECL
#include <cantor/parser/parser.h>
using cantor::parser::SqlParser;
using cantor::parser::InsertStmt;
using cantor::parser::Node;
using cantor::parser::Assignment;
using cantor::parser::DispatchExpr;
using cantor::pb::ast::FuncType;
using cantor::parser::FuncExpr;
using cantor::parser::StmtNode;
using cantor::parser::String;
using cantor::parser::RowExpr;
using cantor::parser::RangeVar;
using cantor::pb::ast::PriorityEnum;
using cantor::parser::CreateTableStmt;
using cantor::parser::CreateViewStmt;
using cantor::parser::CommonTableExpr;
using cantor::parser::TableRef;

using namespace cantor::parser;
#include <cantor/parser/grammar/scanner.h>
#include <cantor/parser/grammar/grammar.h>
extern int sql_lex(YYSTYPE* yylval, YYLTYPE* yylloc, yyscan_t yyscanner, SqlParser* parser);
extern int sql_error(YYLTYPE* yylloc, yyscan_t yyscanner, SqlParser* parser, const char* s);
#define new_node(T) new(parser->arena.allocate(sizeof(T)))T()


#line 124 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"

# ifndef YY_CAST
#  ifdef __cplusplus
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
#  else
#   define YY_CAST(Type, Val) ((Type) (Val))
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
#  endif
# endif
# ifndef YY_NULLPTR
#  if defined __cplusplus
#   if 201103L <= __cplusplus
#    define YY_NULLPTR nullptr
#   else
#    define YY_NULLPTR 0
#   endif
#  else
#   define YY_NULLPTR ((void*)0)
#  endif
# endif

/* Enabling verbose error messages.  */
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 1
#endif

/* Use api.header.include to #include this header
   instead of duplicating it here.  */
#ifndef YY_SQL_HOME_JEFF_GITEE_KUMO_PUB_CANTOR_CANTOR_PARSER_GRAMMAR_GRAMMAR_H_INCLUDED
# define YY_SQL_HOME_JEFF_GITEE_KUMO_PUB_CANTOR_CANTOR_PARSER_GRAMMAR_GRAMMAR_H_INCLUDED
/* Debug traces.  */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int sql_debug;
#endif

/* Token type.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
  enum yytokentype
  {
    ADD = 258,
    ALL = 259,
    ALTER = 260,
    ANALYZE = 261,
    AND = 262,
    AS = 263,
    ASC = 264,
    BETWEEN = 265,
    BIGINT = 266,
    BINARY = 267,
    BY = 268,
    CASCADE = 269,
    CASE = 270,
    CHANGE = 271,
    CHARACTER = 272,
    STRING = 273,
    CHECK = 274,
    COLLATE = 275,
    COLUMN = 276,
    CONSTRAINT = 277,
    CONVERT = 278,
    CREATE = 279,
    CROSS = 280,
    CURRENT_USER = 281,
    DATABASE = 282,
    DATABASES = 283,
    DECIMAL = 284,
    DEFAULT = 285,
    DELAYED = 286,
    DELETE = 287,
    DESC = 288,
    DESCRIBE = 289,
    DISTINCT = 290,
    DISTINCTROW = 291,
    DIV = 292,
    DOUBLE = 293,
    DROP = 294,
    DUAL = 295,
    ELSE = 296,
    ENCLOSED = 297,
    ESCAPED = 298,
    EXISTS = 299,
    EXPLAIN = 300,
    FALSE = 301,
    FLOAT = 302,
    FOR = 303,
    FORCE = 304,
    FOREIGN = 305,
    FROM = 306,
    FULL = 307,
    FULLTEXT = 308,
    GENERATED = 309,
    GRANT = 310,
    GROUP = 311,
    HAVING = 312,
    HIGH_PRIORITY = 313,
    IF = 314,
    IGNORE = 315,
    IN = 316,
    INDEX = 317,
    INFILE = 318,
    INNER = 319,
    INTERVAL = 320,
    DURATION = 321,
    INTO = 322,
    IS = 323,
    INSERT = 324,
    INTEGER = 325,
    INT = 326,
    INT8 = 327,
    INT16 = 328,
    INT3 = 329,
    INT32 = 330,
    INT64 = 331,
    INT128 = 332,
    UINT = 333,
    UINT8 = 334,
    UINT16 = 335,
    UINT3 = 336,
    UINT32 = 337,
    UINT64 = 338,
    UINT128 = 339,
    FP8 = 340,
    FP16 = 341,
    FP32 = 342,
    FP64 = 343,
    JOIN = 344,
    KEY = 345,
    KEYS = 346,
    KILL = 347,
    LEFT = 348,
    LIKE = 349,
    EXACT_LIKE = 350,
    LIMIT = 351,
    LINES = 352,
    LOAD = 353,
    LOCK = 354,
    LONGBLOB = 355,
    LONGTEXT = 356,
    LOW_PRIORITY = 357,
    MATCH = 358,
    MAXVALUE = 359,
    MEDIUMBLOB = 360,
    MEDIUMINT = 361,
    MEDIUMTEXT = 362,
    MOD = 363,
    NAMESPACE = 364,
    NOT = 365,
    NO_WRITE_TO_BINLOG = 366,
    NULLX = 367,
    NUMERIC = 368,
    ON = 369,
    OPTION = 370,
    OR = 371,
    ORDER = 372,
    OUTER = 373,
    PACK_KEYS = 374,
    PARTITION = 375,
    PRECISION = 376,
    PROCEDURE = 377,
    SHARD_ROW_ID_BITS = 378,
    RANGE = 379,
    READ = 380,
    REAL = 381,
    REFERENCES = 382,
    REGEXP = 383,
    RENAME = 384,
    REPLACE = 385,
    MERGE = 386,
    RESTRICT = 387,
    REVOKE = 388,
    RIGHT = 389,
    RLIKE = 390,
    SELECT = 391,
    SET = 392,
    PRAGMA = 393,
    SHOW = 394,
    SMALLINT = 395,
    SQL = 396,
    SQL_CALC_FOUND_ROWS = 397,
    STARTING = 398,
    STRAIGHT_JOIN = 399,
    TABLE = 400,
    STORED = 401,
    TERMINATED = 402,
    OPTIONALLY = 403,
    THEN = 404,
    TINYBLOB = 405,
    TINYINT = 406,
    TINYTEXT = 407,
    TO = 408,
    TRIGGER = 409,
    TRUE = 410,
    UNIQUE = 411,
    UNION = 412,
    UNLOCK = 413,
    UNSIGNED = 414,
    UPDATE = 415,
    USAGE = 416,
    USE = 417,
    USING = 418,
    VALUES = 419,
    LONG = 420,
    _BINARY = 421,
    _UTF8MB4 = 422,
    VIRTUAL = 423,
    WHEN = 424,
    WHERE = 425,
    WRITE = 426,
    WITH = 427,
    XOR = 428,
    ZEROFILL = 429,
    NATURAL = 430,
    BOTH = 431,
    CURRENT_DATE = 432,
    CURRENT_TIME = 433,
    DAY_HOUR = 434,
    DAY_MICROSECOND = 435,
    DAY_MINUTE = 436,
    DAY_SECOND = 437,
    HOUR_MICROSECOND = 438,
    HOUR_MINUTE = 439,
    HOUR_SECOND = 440,
    LEADING = 441,
    MINUTE_MICROSECOND = 442,
    MINUTE_SECOND = 443,
    PRIMARY = 444,
    SECOND_MICROSECOND = 445,
    TRAILING = 446,
    YEAR_MONTH = 447,
    ARRAY = 448,
    TYPE = 449,
    ACTION = 450,
    AFTER = 451,
    AGAINST = 452,
    ALWAYS = 453,
    ALGORITHM = 454,
    ANY = 455,
    ASCII = 456,
    AUTO_INCREMENT = 457,
    AUTOEXTEND_SIZE = 458,
    AVG_ROW_LENGTH = 459,
    AVG = 460,
    BEGINX = 461,
    TXN = 462,
    WORK = 463,
    BINLOG = 464,
    BIT = 465,
    BOOLEAN = 466,
    BOOL = 467,
    BTREE = 468,
    BYTE = 469,
    CASCADED = 470,
    CHARSET = 471,
    CHECKSUM = 472,
    CLEANUP = 473,
    CLIENT = 474,
    COALESCE = 475,
    COLLATION = 476,
    COLUMNS = 477,
    COMMENT = 478,
    COMMIT = 479,
    COMMITTED = 480,
    COMPACT = 481,
    COMPRESSED = 482,
    COMPRESSION = 483,
    CONNECTION = 484,
    CONSISTENT = 485,
    COPY = 486,
    DAY = 487,
    DATA = 488,
    DATE = 489,
    DATETIME = 490,
    DEALLOCATE = 491,
    DEFINER = 492,
    DELAY_KEY_WRITE = 493,
    DISABLE = 494,
    DO = 495,
    DUPLICATE = 496,
    DYNAMIC = 497,
    ENABLE = 498,
    ENCRYPTION = 499,
    END = 500,
    ENGINE = 501,
    ENGINES = 502,
    ENGINE_ATTRIBUTE = 503,
    ENUM = 504,
    EVENT = 505,
    EVENTS = 506,
    ESCAPE = 507,
    EXCLUSIVE = 508,
    EXECUTE = 509,
    FIELDS = 510,
    FIRST = 511,
    LAST = 512,
    FIXED = 513,
    FILE_T = 514,
    FLUSH = 515,
    FORMAT = 516,
    FUNCTION = 517,
    GRANTS = 518,
    HASH = 519,
    HOUR = 520,
    IDENTIFIED = 521,
    ISOLATION = 522,
    INDEXES = 523,
    INPLACE = 524,
    INSERT_METHOD = 525,
    INSTANT = 526,
    INVOKER = 527,
    JSON = 528,
    KEY_BLOCK_SIZE = 529,
    DYNAMIC_PARTITION_ATTR = 530,
    LANGUAGE = 531,
    LOCAL = 532,
    LESS = 533,
    LEVEL = 534,
    MASTER = 535,
    NANOSECOND = 536,
    MICROSECOND = 537,
    MILLISECOND = 538,
    MINUTE = 539,
    MODE = 540,
    MODIFY = 541,
    MONTH = 542,
    MAX_ROWS = 543,
    MAX_CONNECTIONS_PER_HOUR = 544,
    MAX_QUERIES_PER_HOUR = 545,
    MAX_UPDATES_PER_HOUR = 546,
    MAX_USER_CONNECTIONS = 547,
    MIN_ROWS = 548,
    NAMES = 549,
    NATIONAL = 550,
    NO = 551,
    NONE = 552,
    OFFSET = 553,
    ONLY = 554,
    PASSWORD = 555,
    PARTITIONS = 556,
    PLUGINS = 557,
    PREPARE = 558,
    PRIVILEGES = 559,
    PROCESS = 560,
    PROCESSLIST = 561,
    PROFILES = 562,
    PROXY = 563,
    QUARTER = 564,
    QUERY = 565,
    QUERIES = 566,
    QUICK = 567,
    RECOVER = 568,
    RESTORE = 569,
    REDUNDANT = 570,
    RELOAD = 571,
    REPEATABLE = 572,
    REPLICATION = 573,
    ROLLBACK = 574,
    ROLLUP = 575,
    ROUTINE = 576,
    ROW = 577,
    ROW_COUNT = 578,
    ROW_FORMAT = 579,
    SECOND = 580,
    SECONDARY_ENGINE_ATTRIBUTE = 581,
    SECURITY = 582,
    SEPARATOR = 583,
    SERIALIZABLE = 584,
    SESSION = 585,
    SHARE = 586,
    SHARED = 587,
    SIGNED = 588,
    SLAVE = 589,
    SNAPSHOT = 590,
    SQL_CACHE = 591,
    SQL_NO_CACHE = 592,
    SHUTDOWN = 593,
    START = 594,
    STATS_PERSISTENT = 595,
    STATS_AUTO_RECALC = 596,
    STATS_SAMPLE_PAGES = 597,
    STATUS = 598,
    SUPER = 599,
    SOME = 600,
    SWAP = 601,
    GLOBAL = 602,
    TABLES = 603,
    TABLESPACE = 604,
    TEMPORARY = 605,
    TEMPTABLE = 606,
    TEXT = 607,
    THAN = 608,
    TIME = 609,
    TIMESTAMP = 610,
    MAP = 611,
    TUPLE = 612,
    STRUCT = 613,
    PROTO = 614,
    TRACE = 615,
    TRANSACTION = 616,
    TRIGGERS = 617,
    TRUNCATE = 618,
    UNCOMMITTED = 619,
    UNKNOWN = 620,
    USER = 621,
    UNDEFINED = 622,
    VALUE = 623,
    VARIABLES = 624,
    VIEW = 625,
    VECTOR = 626,
    WARNINGS = 627,
    WEEK = 628,
    YEAR = 629,
    HLL = 630,
    BITMAP = 631,
    TDIGEST = 632,
    LEARNER = 633,
    ADDDATE = 634,
    BIT_AND = 635,
    BIT_OR = 636,
    BIT_XOR = 637,
    CAST = 638,
    COUNT = 639,
    CURDATE = 640,
    CURTIME = 641,
    CURRENT_TIMESTAMP = 642,
    DATE_ADD = 643,
    DATE_SUB = 644,
    EXTRACT = 645,
    GROUP_CONCAT = 646,
    LOCALTIME = 647,
    LOCALTIMESTAMP = 648,
    MAX = 649,
    MID = 650,
    MIN = 651,
    NOW = 652,
    UTC_TIMESTAMP = 653,
    POSITION = 654,
    SESSION_USER = 655,
    STD = 656,
    STDDEV = 657,
    STDDEV_POP = 658,
    STDDEV_SAMP = 659,
    SUBDATE = 660,
    SUBSTR = 661,
    SUBSTRING = 662,
    TIMESTAMPADD = 663,
    TIMESTAMPDIFF = 664,
    SUM = 665,
    SYSDATE = 666,
    SYSTEM_USER = 667,
    TRIM = 668,
    VARIANCE = 669,
    VAR_POP = 670,
    VAR_SAMP = 671,
    USER_AGG = 672,
    EQ_OP = 673,
    COLON = 674,
    ASSIGN_OP = 675,
    MOD_OP = 676,
    GE_OP = 677,
    GT_OP = 678,
    LE_OP = 679,
    LT_OP = 680,
    NE_OP = 681,
    AND_OP = 682,
    OR_OP = 683,
    NOT_OP = 684,
    LS_OP = 685,
    RS_OP = 686,
    CHINESE_DOT = 687,
    JS_OP = 688,
    JS_OP1 = 689,
    IDENT = 690,
    DECIMAL_LIT = 691,
    PLACE_HOLDER_LIT = 692,
    INTEGER_LIT = 693,
    STRING_LIT = 694,
    empty = 695,
    lowerThanSetKeyword = 696,
    lowerThanKey = 697,
    tableRefPriority = 698,
    NEG = 699,
    lowerThanComma = 700
  };
#endif

/* Value type.  */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 63 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"

    int integer;
    Node* item;  // item can be used as list/array
    StmtNode*       stmt;
    String          string;
    SelectStmtOpts* select_opts;
    GroupByClause*  group_by;
    OrderByClause*  order_by;
    LimitClause*    limit;
    Vector<int>*    int_list;
    PrivType*                 priv_type;
    Vector<PrivType*>*        priv_type_list;
    UserSpec*                 user_spec;
    Vector<UserSpec*>*        user_spec_list;
    NamespaceOption*          namespace_option;
    Vector<NamespaceOption*>* namespace_option_list;
    ColumnOption*             column_option;
    Vector<ColumnOption*>*    column_option_list;
    ColumnDef*                column_def;
    Vector<ColumnDef*>*       column_def_list;
    WhenClauseCase*           when_clause_case;
    Vector<WhenClauseCase*>*  when_clause_case_list;
    WhenClause*               when_clause;
    Constraint*               constraint;
    TableDefElement*          table_def_element;
    Vector<TableDefElement*>* table_def_element_list;
    PartitionRange*           partition_range;
    Vector<PartitionRange*>*  partition_range_list;
    DatabaseOption*           database_option;
    Vector<DatabaseOption*>*  database_option_list;
    Assignment*               assignment;
    Vector<Assignment*>*      assignment_list;
    IndexHint*                index_hint;
    Vector<IndexHint*>*       index_hint_list;
    SelectField*              select_field;
    Vector<SelectField*>*     select_field_list;
    ByItem*                   by_item;
    Vector<ByItem*>*          by_item_list;
    TableOption*              table_option;
    Vector<TableOption*>*     table_option_list;
    Vector<String>*           string_list;
    PartitionOption*          partition_option;
    Vector<PartitionOption*>* partition_option_list;
    AlterTableSpec*           alter_spec;
    Vector<AlterTableSpec*>*  alter_spec_list;
    FieldItem*                field_item;
    Vector<FieldItem*>*       field_item_list;
    RowExpr*                  row_expr;
    AuthOption*               auth_option;
    UserIdentity*             user_identity;
    PrivLevel*                priv_level;
    JoinNode*                 Join_node;
    IntConstantExpr*          int_const_expr;
    StringConstantExpr*       string_const_expr;
    Vector<IntConstantExpr*>* const_int_expr_list;
    ConstantExpr*             cexpr;
    Vector<ConstantExpr*>*    cexpr_list;
    TypeStmt*                 type_name;
    Vector<TypeStmt*>*        type_name_list;
    Indirection*              indirection;
    Vector<Indirection*>*     indirection_list;
    RangeVar*                 range_var;
    Vector<RangeVar*>*        range_var_list;
    DispatchExpr*                 expr;
    Vector<DispatchExpr*>*        expr_list;
    DictPair*                 dict_pair;
    Vector<DictPair*>*        dict_pair_list;
    MapPair*                  map_pair;
    Vector<MapPair*>*         map_pair_list;
    EnumElement*              enum_element;
    Vector<EnumElement*>*     enum_element_list;
    cantor::pb::ast::TypeScope          type_scope;
    cantor::pb::ast::TimeStampPrecision        timestamp_precision;
    TableRef*                 table_ref;
    FieldsClause*             fields_clause;
    LinesClause*              lines_clause;
    WithClause*               with_clause;
    PragmaSetStmt*            pragma_set_stmt;
    VarAssign*                var_assign;
    TablePartitionOption*     table_partition_option;
    IndexOption*              index_option;
    IndexLockOpt*             index_lock_opt;
    cantor::pb::ast::IndexAlgoType      index_type;
    AlgorithmOpt*             algorighm_opt;
    cantor::pb::ast::IndexDistributeType  index_distribute_type;
    cantor::pb::ast::OnDuplicateKeyHandle on_duplicate_key_handle;
    cantor::pb::ast::SelectLock           select_lock;
    NamedType*                          named_type;
    Vector<NamedType*>*                 named_type_list;
    WhereClause*                        where_clause;
    HavingClause*                       having_clause;
    CtorFuncExpr*                       ctor_func_expr;
    TableName*                          table_name;
    Vector<TableName*>*                 table_name_list;
    TypeNameUri*                        type_name_uri;
    ColumnName*                         column_name;
    Vector<ColumnName*>*                column_name_list;

#line 721 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"

};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif

/* Location type.  */
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{
  int first_line;
  int first_column;
  int last_line;
  int last_column;
};
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif



int sql_parse (yyscan_t yyscanner, SqlParser* parser);

#endif /* !YY_SQL_HOME_JEFF_GITEE_KUMO_PUB_CANTOR_CANTOR_PARSER_GRAMMAR_GRAMMAR_H_INCLUDED  */



#ifdef short
# undef short
#endif

/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
   <limits.h> and (if available) <stdint.h> are included
   so that the code can choose integer types of a good width.  */

#ifndef __PTRDIFF_MAX__
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
#  define YY_STDINT_H
# endif
#endif

/* Narrow types that promote to a signed type and that can represent a
   signed or unsigned integer of at least N bits.  In tables they can
   save space and decrease cache pressure.  Promoting to a signed type
   helps avoid bugs in integer arithmetic.  */

#ifdef __INT_LEAST8_MAX__
typedef __INT_LEAST8_TYPE__ yytype_int8;
#elif defined YY_STDINT_H
typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif

#ifdef __INT_LEAST16_MAX__
typedef __INT_LEAST16_TYPE__ yytype_int16;
#elif defined YY_STDINT_H
typedef int_least16_t yytype_int16;
#else
typedef short yytype_int16;
#endif

#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST8_MAX <= INT_MAX)
typedef uint_least8_t yytype_uint8;
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
typedef unsigned char yytype_uint8;
#else
typedef short yytype_uint8;
#endif

#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST16_MAX <= INT_MAX)
typedef uint_least16_t yytype_uint16;
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
typedef unsigned short yytype_uint16;
#else
typedef int yytype_uint16;
#endif

#ifndef YYPTRDIFF_T
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
# elif defined PTRDIFF_MAX
#  ifndef ptrdiff_t
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  endif
#  define YYPTRDIFF_T ptrdiff_t
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
# else
#  define YYPTRDIFF_T long
#  define YYPTRDIFF_MAXIMUM LONG_MAX
# endif
#endif

#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
#  define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
#  define YYSIZE_T size_t
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# else
#  define YYSIZE_T unsigned
# endif
#endif

#define YYSIZE_MAXIMUM                                  \
  YY_CAST (YYPTRDIFF_T,                                 \
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
            ? YYPTRDIFF_MAXIMUM                         \
            : YY_CAST (YYSIZE_T, -1)))

#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))

/* Stored state numbers (used for stacks). */
typedef yytype_int16 yy_state_t;

/* State numbers in computations.  */
typedef int yy_state_fast_t;

#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
#  if ENABLE_NLS
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
#  endif
# endif
# ifndef YY_
#  define YY_(Msgid) Msgid
# endif
#endif

#ifndef YY_ATTRIBUTE_PURE
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
#  define YY_ATTRIBUTE_PURE
# endif
#endif

#ifndef YY_ATTRIBUTE_UNUSED
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
#  define YY_ATTRIBUTE_UNUSED
# endif
#endif

/* Suppress unused-variable warnings by "using" E.  */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
#else
# define YYUSE(E) /* empty */
#endif

#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
    _Pragma ("GCC diagnostic push")                                     \
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
    _Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif

#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
    _Pragma ("GCC diagnostic push")                            \
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
# define YY_IGNORE_USELESS_CAST_END            \
    _Pragma ("GCC diagnostic pop")
#endif
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_END
#endif


#define YY_ASSERT(E) ((void) (0 && (E)))

#if ! defined yyoverflow || YYERROR_VERBOSE

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# ifdef YYSTACK_USE_ALLOCA
#  if YYSTACK_USE_ALLOCA
#   ifdef __GNUC__
#    define YYSTACK_ALLOC __builtin_alloca
#   elif defined __BUILTIN_VA_ARG_INCR
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
#   elif defined _AIX
#    define YYSTACK_ALLOC __alloca
#   elif defined _MSC_VER
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
#    define alloca _alloca
#   else
#    define YYSTACK_ALLOC alloca
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
#     ifndef EXIT_SUCCESS
#      define EXIT_SUCCESS 0
#     endif
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's 'empty if-body' warning.  */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
#  ifndef YYSTACK_ALLOC_MAXIMUM
    /* The OS might guarantee only one guard page at the bottom of the stack,
       and a page size can be as small as 4096 bytes.  So we cannot safely
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
       to allow for a few compiler-allocated temporary stack slots.  */
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
#  endif
# else
#  define YYSTACK_ALLOC YYMALLOC
#  define YYSTACK_FREE YYFREE
#  ifndef YYSTACK_ALLOC_MAXIMUM
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
#  endif
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
       && ! ((defined YYMALLOC || defined malloc) \
             && (defined YYFREE || defined free)))
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
#   ifndef EXIT_SUCCESS
#    define EXIT_SUCCESS 0
#   endif
#  endif
#  ifndef YYMALLOC
#   define YYMALLOC malloc
#   if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
#  ifndef YYFREE
#   define YYFREE free
#   if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
# endif
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */


#if (! defined yyoverflow \
     && (! defined __cplusplus \
         || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
             && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  yy_state_t yyss_alloc;
  YYSTYPE yyvs_alloc;
  YYLTYPE yyls_alloc;
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# define YYSTACK_BYTES(N) \
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
             + YYSIZEOF (YYLTYPE)) \
      + 2 * YYSTACK_GAP_MAXIMUM)

# define YYCOPY_NEEDED 1

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    do                                                                  \
      {                                                                 \
        YYPTRDIFF_T yynewbytes;                                         \
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
        Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
      }                                                                 \
    while (0)

#endif

#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
/* Copy COUNT objects from SRC to DST.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if defined __GNUC__ && 1 < __GNUC__
#   define YYCOPY(Dst, Src, Count) \
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
#  else
#   define YYCOPY(Dst, Src, Count)              \
      do                                        \
        {                                       \
          YYPTRDIFF_T yyi;                      \
          for (yyi = 0; yyi < (Count); yyi++)   \
            (Dst)[yyi] = (Src)[yyi];            \
        }                                       \
      while (0)
#  endif
# endif
#endif /* !YYCOPY_NEEDED */

/* YYFINAL -- State number of the termination state.  */
#define YYFINAL  507
/* YYLAST -- Last index in YYTABLE.  */
#define YYLAST   28632

/* YYNTOKENS -- Number of terminals.  */
#define YYNTOKENS  465
/* YYNNTS -- Number of nonterminals.  */
#define YYNNTS  315
/* YYNRULES -- Number of rules.  */
#define YYNRULES  1283
/* YYNSTATES -- Number of states.  */
#define YYNSTATES  2351

#define YYUNDEFTOK  2
#define YYMAXUTOK   701


/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex, with out-of-bounds checking.  */
#define YYTRANSLATE(YYX)                                                \
  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)

/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex.  */
static const yytype_int16 yytranslate[] =
{
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,   445,     2,
     454,   458,   448,   446,   456,   447,   453,   449,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,   457,
       2,     2,     2,     2,   464,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,   459,     2,   460,   450,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,   461,   444,   462,   451,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
     435,   436,   437,   438,   439,   440,   441,   442,   443,   452,
     455,   463
};

#if YYDEBUG
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
static const yytype_int16 yyrline[] =
{
       0,   916,   916,   919,   922,   928,   929,   930,   931,   932,
     933,   934,   935,   936,   937,   938,   939,   940,   941,   942,
     943,   944,   945,   946,   947,   948,   949,   950,   951,   952,
     953,   954,   955,   956,   957,   958,   959,   960,   961,   962,
     963,   964,   965,   972,   986,   998,  1001,  1004,  1007,  1012,
    1015,  1020,  1023,  1028,  1031,  1036,  1037,  1041,  1047,  1054,
    1063,  1070,  1078,  1084,  1092,  1098,  1103,  1119,  1119,  1122,
    1125,  1130,  1133,  1139,  1148,  1148,  1152,  1158,  1167,  1173,
    1181,  1186,  1193,  1200,  1208,  1211,  1218,  1221,  1227,  1230,
    1237,  1241,  1247,  1267,  1268,  1274,  1278,  1285,  1292,  1299,
    1306,  1312,  1320,  1332,  1335,  1338,  1344,  1347,  1354,  1361,
    1369,  1381,  1388,  1396,  1405,  1418,  1421,  1426,  1433,  1441,
    1450,  1462,  1466,  1470,  1478,  1490,  1502,  1509,  1519,  1532,
    1546,  1549,  1560,  1563,  1569,  1572,  1578,  1589,  1600,  1611,
    1623,  1637,  1643,  1646,  1651,  1657,  1664,  1667,  1673,  1676,
    1682,  1685,  1691,  1694,  1700,  1703,  1710,  1725,  1728,  1731,
    1737,  1737,  1741,  1743,  1747,  1750,  1753,  1756,  1761,  1764,
    1770,  1777,  1780,  1786,  1795,  1805,  1815,  1826,  1837,  1847,
    1858,  1868,  1878,  1892,  1895,  1898,  1903,  1904,  1908,  1908,
    1908,  1912,  1915,  1924,  1935,  1949,  1957,  1960,  1965,  1968,
    1976,  1979,  1984,  1993,  1996,  2001,  2010,  2013,  2019,  2029,
    2032,  2035,  2040,  2051,  2061,  2069,  2081,  2089,  2096,  2107,
    2110,  2113,  2118,  2121,  2124,  2129,  2132,  2135,  2140,  2143,
    2148,  2151,  2158,  2165,  2173,  2182,  2192,  2204,  2214,  2217,
    2222,  2225,  2228,  2231,  2237,  2243,  2249,  2253,  2261,  2275,
    2287,  2299,  2316,  2322,  2334,  2337,  2346,  2351,  2352,  2353,
    2361,  2364,  2368,  2375,  2385,  2396,  2406,  2414,  2423,  2432,
    2441,  2449,  2458,  2467,  2476,  2485,  2494,  2507,  2520,  2536,
    2537,  2538,  2541,  2544,  2549,  2549,  2552,  2552,  2555,  2555,
    2555,  2559,  2563,  2567,  2571,  2575,  2579,  2583,  2587,  2591,
    2598,  2602,  2606,  2610,  2614,  2618,  2622,  2626,  2630,  2634,
    2638,  2642,  2646,  2650,  2654,  2658,  2662,  2666,  2670,  2674,
    2681,  2685,  2689,  2696,  2696,  2700,  2700,  2704,  2704,  2704,
    2704,  2704,  2708,  2717,  2723,  2729,  2735,  2742,  2750,  2757,
    2764,  2771,  2778,  2785,  2792,  2801,  2807,  2814,  2820,  2827,
    2834,  2844,  2853,  2862,  2869,  2876,  2883,  2890,  2897,  2920,
    2927,  2934,  2941,  2948,  2955,  2962,  2969,  2976,  2983,  2990,
    2997,  3004,  3010,  3016,  3022,  3030,  3038,  3046,  3054,  3063,
    3072,  3078,  3084,  3091,  3099,  3108,  3117,  3125,  3133,  3143,
    3150,  3159,  3167,  3176,  3185,  3195,  3205,  3211,  3218,  3224,
    3230,  3239,  3248,  3257,  3266,  3275,  3284,  3293,  3302,  3311,
    3320,  3329,  3338,  3347,  3356,  3365,  3391,  3402,  3405,  3412,
    3413,  3417,  3420,  3426,  3429,  3433,  3436,  3440,  3441,  3447,
    3449,  3450,  3451,  3452,  3453,  3454,  3455,  3456,  3457,  3458,
    3459,  3460,  3461,  3462,  3463,  3464,  3465,  3466,  3467,  3468,
    3469,  3470,  3471,  3472,  3473,  3474,  3475,  3476,  3477,  3478,
    3479,  3480,  3481,  3482,  3483,  3484,  3485,  3486,  3487,  3488,
    3489,  3490,  3491,  3492,  3493,  3494,  3495,  3496,  3497,  3498,
    3499,  3500,  3501,  3502,  3503,  3504,  3505,  3506,  3507,  3508,
    3509,  3510,  3511,  3512,  3513,  3514,  3515,  3516,  3517,  3518,
    3519,  3520,  3521,  3522,  3523,  3524,  3525,  3526,  3527,  3528,
    3529,  3530,  3531,  3532,  3533,  3534,  3535,  3536,  3537,  3538,
    3539,  3540,  3541,  3542,  3543,  3544,  3545,  3546,  3547,  3548,
    3549,  3550,  3551,  3552,  3553,  3554,  3555,  3556,  3557,  3558,
    3559,  3560,  3561,  3562,  3563,  3564,  3565,  3566,  3567,  3568,
    3569,  3570,  3571,  3572,  3573,  3574,  3575,  3576,  3577,  3578,
    3579,  3580,  3581,  3582,  3583,  3584,  3585,  3586,  3587,  3588,
    3589,  3590,  3591,  3592,  3593,  3594,  3595,  3596,  3597,  3598,
    3599,  3600,  3601,  3602,  3603,  3604,  3605,  3606,  3607,  3608,
    3609,  3610,  3611,  3612,  3613,  3614,  3615,  3616,  3617,  3618,
    3619,  3620,  3621,  3622,  3624,  3625,  3626,  3627,  3628,  3629,
    3630,  3631,  3632,  3633,  3634,  3635,  3636,  3637,  3638,  3639,
    3640,  3641,  3642,  3643,  3644,  3645,  3646,  3647,  3648,  3649,
    3650,  3651,  3652,  3653,  3654,  3655,  3656,  3657,  3658,  3662,
    3664,  3669,  3673,  3677,  3681,  3683,  3685,  3689,  3696,  3698,
    3700,  3707,  3709,  3716,  3718,  3724,  3728,  3732,  3743,  3754,
    3760,  3764,  3781,  3788,  3797,  3800,  3804,  3808,  3814,  3825,
    3828,  3833,  3842,  3845,  3851,  3854,  3858,  3862,  3871,  3880,
    3884,  3888,  3892,  3896,  3900,  3904,  3908,  3912,  3916,  3920,
    3924,  3928,  3932,  3936,  3943,  3946,  3949,  3952,  3955,  3958,
    3964,  3975,  3981,  3987,  3993,  3999,  4005,  4011,  4017,  4029,
    4035,  4040,  4046,  4054,  4057,  4062,  4065,  4070,  4073,  4076,
    4081,  4084,  4089,  4092,  4098,  4101,  4104,  4107,  4112,  4115,
    4124,  4137,  4140,  4147,  4150,  4157,  4160,  4166,  4176,  4186,
    4193,  4203,  4215,  4225,  4235,  4240,  4244,  4251,  4258,  4265,
    4272,  4279,  4286,  4293,  4301,  4309,  4321,  4330,  4342,  4343,
    4347,  4361,  4369,  4375,  4376,  4377,  4378,  4379,  4382,  4383,
    4384,  4388,  4389,  4393,  4394,  4398,  4408,  4411,  4415,  4422,
    4432,  4442,  4452,  4463,  4474,  4486,  4498,  4508,  4519,  4523,
    4530,  4533,  4540,  4547,  4550,  4558,  4567,  4577,  4580,  4585,
    4592,  4595,  4601,  4607,  4614,  4624,  4627,  4633,  4636,  4641,
    4642,  4647,  4650,  4657,  4661,  4668,  4678,  4686,  4694,  4702,
    4710,  4718,  4726,  4734,  4741,  4749,  4756,  4767,  4771,  4779,
    4782,  4788,  4797,  4806,  4815,  4827,  4831,  4839,  4842,  4848,
    4849,  4850,  4854,  4858,  4862,  4866,  4870,  4874,  4881,  4886,
    4891,  4896,  4901,  4909,  4914,  4919,  4924,  4929,  4937,  4938,
    4939,  4940,  4941,  4942,  4943,  4944,  4945,  4946,  4947,  4948,
    4949,  4950,  4951,  4952,  4953,  4954,  4955,  4959,  4968,  4980,
    4981,  4985,  4999,  5002,  5010,  5013,  5020,  5021,  5025,  5032,
    5044,  5053,  5060,  5070,  5083,  5086,  5094,  5105,  5105,  5109,
    5110,  5111,  5116,  5128,  5139,  5151,  5157,  5162,  5170,  5178,
    5189,  5192,  5199,  5203,  5211,  5222,  5223,  5227,  5234,  5242,
    5250,  5258,  5263,  5268,  5273,  5281,  5288,  5297,  5316,  5324,
    5331,  5350,  5364,  5368,  5377,  5386,  5398,  5405,  5414,  5432,
    5437,  5442,  5447,  5455,  5458,  5461,  5464,  5467,  5476,  5479,
    5482,  5485,  5490,  5491,  5492,  5496,  5496,  5499,  5502,  5505,
    5508,  5511,  5514,  5518,  5522,  5525,  5529,  5532,  5535,  5538,
    5541,  5544,  5547,  5551,  5555,  5559,  5562,  5565,  5570,  5573,
    5576,  5581,  5584,  5589,  5592,  5597,  5603,  5612,  5630,  5648,
    5663,  5667,  5675,  5676,  5680,  5681,  5683,  5687,  5688,  5690,
    5695,  5703,  5711,  5720,  5728,  5736,  5748,  5756,  5764,  5772,
    5781,  5790,  5799,  5807,  5815,  5823,  5832,  5840,  5848,  5857,
    5867,  5879,  5892,  5900,  5919,  5926,  5947,  5954,  5962,  5969,
    5979,  5979,  5979,  5983,  5990,  6000,  6006,  6012,  6025,  6045,
    6048,  6054,  6057,  6064,  6067,  6071,  6078,  6085,  6114,  6115,
    6119,  6123,  6131,  6139,  6152,  6164,  6179,  6185,  6196,  6199,
    6206,  6209,  6216,  6219,  6226,  6229,  6236,  6237,  6238,  6239,
    6240,  6241,  6242,  6250,  6262,  6273,  6285,  6291,  6307,  6310,
    6317,  6321,  6325,  6332,  6345,  6356,  6368,  6372,  6382,  6395,
    6403,  6411,  6421,  6422,  6426,  6429,  6439,  6446,  6449,  6456,
    6470,  6484,  6488,  6498,  6507,  6510,  6513,  6516,  6519,  6523,
    6526,  6529,  6532,  6535,  6538,  6541,  6544,  6547,  6550,  6553,
    6556,  6559,  6562,  6565,  6568,  6571,  6574,  6577,  6580,  6583,
    6586,  6589,  6592,  6595,  6598,  6601,  6604,  6610,  6616,  6622,
    6629,  6637,  6647,  6650,  6661,  6667,  6673,  6679,  6685,  6694,
    6703,  6711,  6719,  6727,  6735,  6746,  6749,  6757,  6766,  6767,
    6771,  6775,  6779,  6783,  6793,  6797,  6801,  6807,  6813,  6822,
    6829,  6836,  6843,  6850,  6857,  6864,  6871,  6881,  6887,  6893,
    6899,  6905,  6911,  6917,  6923,  6929,  6935,  6941,  6947,  6953,
    6960,  6967,  6974,  6981,  6988,  6995,  7002,  7009,  7016,  7026,
    7034,  7042,  7050,  7058,  7066,  7074,  7082,  7093,  7096,  7100,
    7104,  7110,  7113,  7117,  7121,  7125,  7129,  7133,  7140,  7150,
    7160,  7170,  7180,  7187,  7194,  7201,  7217,  7227,  7230,  7235,
    7241,  7246,  7252,  7257,  7263,  7267,  7275,  7280,  7288,  7296,
    7306,  7310,  7317,  7318,  7322,  7327,  7333,  7343,  7344,  7349,
    7353,  7360,  7364,  7370,  7375,  7382,  7386,  7394,  7398,  7405,
    7410,  7416,  7420,  7426,  7431,  7436,  7446,  7450,  7458,  7462,
    7469,  7472,  7479,  7483,  7490,  7493,  7500,  7511,  7521,  7534,
    7538,  7542,  7546,  7551
};
#endif

#if YYDEBUG || YYERROR_VERBOSE || 1
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
static const char *const yytname[] =
{
  "$end", "error", "$undefined", "ADD", "ALL", "ALTER", "ANALYZE", "AND",
  "AS", "ASC", "BETWEEN", "BIGINT", "BINARY", "BY", "CASCADE", "CASE",
  "CHANGE", "CHARACTER", "STRING", "CHECK", "COLLATE", "COLUMN",
  "CONSTRAINT", "CONVERT", "CREATE", "CROSS", "CURRENT_USER", "DATABASE",
  "DATABASES", "DECIMAL", "DEFAULT", "DELAYED", "DELETE", "DESC",
  "DESCRIBE", "DISTINCT", "DISTINCTROW", "DIV", "DOUBLE", "DROP", "DUAL",
  "ELSE", "ENCLOSED", "ESCAPED", "EXISTS", "EXPLAIN", "FALSE", "FLOAT",
  "FOR", "FORCE", "FOREIGN", "FROM", "FULL", "FULLTEXT", "GENERATED",
  "GRANT", "GROUP", "HAVING", "HIGH_PRIORITY", "IF", "IGNORE", "IN",
  "INDEX", "INFILE", "INNER", "INTERVAL", "DURATION", "INTO", "IS",
  "INSERT", "INTEGER", "INT", "INT8", "INT16", "INT3", "INT32", "INT64",
  "INT128", "UINT", "UINT8", "UINT16", "UINT3", "UINT32", "UINT64",
  "UINT128", "FP8", "FP16", "FP32", "FP64", "JOIN", "KEY", "KEYS", "KILL",
  "LEFT", "LIKE", "EXACT_LIKE", "LIMIT", "LINES", "LOAD", "LOCK",
  "LONGBLOB", "LONGTEXT", "LOW_PRIORITY", "MATCH", "MAXVALUE",
  "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "MOD", "NAMESPACE", "NOT",
  "NO_WRITE_TO_BINLOG", "NULLX", "NUMERIC", "ON", "OPTION", "OR", "ORDER",
  "OUTER", "PACK_KEYS", "PARTITION", "PRECISION", "PROCEDURE",
  "SHARD_ROW_ID_BITS", "RANGE", "READ", "REAL", "REFERENCES", "REGEXP",
  "RENAME", "REPLACE", "MERGE", "RESTRICT", "REVOKE", "RIGHT", "RLIKE",
  "SELECT", "SET", "PRAGMA", "SHOW", "SMALLINT", "SQL",
  "SQL_CALC_FOUND_ROWS", "STARTING", "STRAIGHT_JOIN", "TABLE", "STORED",
  "TERMINATED", "OPTIONALLY", "THEN", "TINYBLOB", "TINYINT", "TINYTEXT",
  "TO", "TRIGGER", "TRUE", "UNIQUE", "UNION", "UNLOCK", "UNSIGNED",
  "UPDATE", "USAGE", "USE", "USING", "VALUES", "LONG", "_BINARY",
  "_UTF8MB4", "VIRTUAL", "WHEN", "WHERE", "WRITE", "WITH", "XOR",
  "ZEROFILL", "NATURAL", "BOTH", "CURRENT_DATE", "CURRENT_TIME",
  "DAY_HOUR", "DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND",
  "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "LEADING",
  "MINUTE_MICROSECOND", "MINUTE_SECOND", "PRIMARY", "SECOND_MICROSECOND",
  "TRAILING", "YEAR_MONTH", "ARRAY", "TYPE", "ACTION", "AFTER", "AGAINST",
  "ALWAYS", "ALGORITHM", "ANY", "ASCII", "AUTO_INCREMENT",
  "AUTOEXTEND_SIZE", "AVG_ROW_LENGTH", "AVG", "BEGINX", "TXN", "WORK",
  "BINLOG", "BIT", "BOOLEAN", "BOOL", "BTREE", "BYTE", "CASCADED",
  "CHARSET", "CHECKSUM", "CLEANUP", "CLIENT", "COALESCE", "COLLATION",
  "COLUMNS", "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPRESSED",
  "COMPRESSION", "CONNECTION", "CONSISTENT", "COPY", "DAY", "DATA", "DATE",
  "DATETIME", "DEALLOCATE", "DEFINER", "DELAY_KEY_WRITE", "DISABLE", "DO",
  "DUPLICATE", "DYNAMIC", "ENABLE", "ENCRYPTION", "END", "ENGINE",
  "ENGINES", "ENGINE_ATTRIBUTE", "ENUM", "EVENT", "EVENTS", "ESCAPE",
  "EXCLUSIVE", "EXECUTE", "FIELDS", "FIRST", "LAST", "FIXED", "FILE_T",
  "FLUSH", "FORMAT", "FUNCTION", "GRANTS", "HASH", "HOUR", "IDENTIFIED",
  "ISOLATION", "INDEXES", "INPLACE", "INSERT_METHOD", "INSTANT", "INVOKER",
  "JSON", "KEY_BLOCK_SIZE", "DYNAMIC_PARTITION_ATTR", "LANGUAGE", "LOCAL",
  "LESS", "LEVEL", "MASTER", "NANOSECOND", "MICROSECOND", "MILLISECOND",
  "MINUTE", "MODE", "MODIFY", "MONTH", "MAX_ROWS",
  "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR",
  "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MIN_ROWS", "NAMES",
  "NATIONAL", "NO", "NONE", "OFFSET", "ONLY", "PASSWORD", "PARTITIONS",
  "PLUGINS", "PREPARE", "PRIVILEGES", "PROCESS", "PROCESSLIST", "PROFILES",
  "PROXY", "QUARTER", "QUERY", "QUERIES", "QUICK", "RECOVER", "RESTORE",
  "REDUNDANT", "RELOAD", "REPEATABLE", "REPLICATION", "ROLLBACK", "ROLLUP",
  "ROUTINE", "ROW", "ROW_COUNT", "ROW_FORMAT", "SECOND",
  "SECONDARY_ENGINE_ATTRIBUTE", "SECURITY", "SEPARATOR", "SERIALIZABLE",
  "SESSION", "SHARE", "SHARED", "SIGNED", "SLAVE", "SNAPSHOT", "SQL_CACHE",
  "SQL_NO_CACHE", "SHUTDOWN", "START", "STATS_PERSISTENT",
  "STATS_AUTO_RECALC", "STATS_SAMPLE_PAGES", "STATUS", "SUPER", "SOME",
  "SWAP", "GLOBAL", "TABLES", "TABLESPACE", "TEMPORARY", "TEMPTABLE",
  "TEXT", "THAN", "TIME", "TIMESTAMP", "MAP", "TUPLE", "STRUCT", "PROTO",
  "TRACE", "TRANSACTION", "TRIGGERS", "TRUNCATE", "UNCOMMITTED", "UNKNOWN",
  "USER", "UNDEFINED", "VALUE", "VARIABLES", "VIEW", "VECTOR", "WARNINGS",
  "WEEK", "YEAR", "HLL", "BITMAP", "TDIGEST", "LEARNER", "ADDDATE",
  "BIT_AND", "BIT_OR", "BIT_XOR", "CAST", "COUNT", "CURDATE", "CURTIME",
  "CURRENT_TIMESTAMP", "DATE_ADD", "DATE_SUB", "EXTRACT", "GROUP_CONCAT",
  "LOCALTIME", "LOCALTIMESTAMP", "MAX", "MID", "MIN", "NOW",
  "UTC_TIMESTAMP", "POSITION", "SESSION_USER", "STD", "STDDEV",
  "STDDEV_POP", "STDDEV_SAMP", "SUBDATE", "SUBSTR", "SUBSTRING",
  "TIMESTAMPADD", "TIMESTAMPDIFF", "SUM", "SYSDATE", "SYSTEM_USER", "TRIM",
  "VARIANCE", "VAR_POP", "VAR_SAMP", "USER_AGG", "EQ_OP", "COLON",
  "ASSIGN_OP", "MOD_OP", "GE_OP", "GT_OP", "LE_OP", "LT_OP", "NE_OP",
  "AND_OP", "OR_OP", "NOT_OP", "LS_OP", "RS_OP", "CHINESE_DOT", "JS_OP",
  "JS_OP1", "IDENT", "DECIMAL_LIT", "PLACE_HOLDER_LIT", "INTEGER_LIT",
  "STRING_LIT", "empty", "lowerThanSetKeyword", "lowerThanKey",
  "tableRefPriority", "'|'", "'&'", "'+'", "'-'", "'*'", "'/'", "'^'",
  "'~'", "NEG", "'.'", "'('", "lowerThanComma", "','", "';'", "')'", "'['",
  "']'", "'{'", "'}'", "\"ESCAPE\"", "'@'", "$accept", "MultiStmt",
  "Statement", "InsertStmt", "ReplaceStmt", "PriorityOpt",
  "IgnoreOptional", "MergeOptional", "QuickOptional", "IntoOpt",
  "InsertValues", "values_sym", "OnDuplicateKeyUpdate", "AssignmentList",
  "Assignment", "EqAssign", "ValueList", "RowExprList", "RowExpr",
  "ExprList", "ColumnNameListOpt", "RangeVarColumnNameListOpt",
  "RangeVarColumnNameList", "ColumnNameList", "RangeVar",
  "indirection_list_opt", "indirection_list", "indirection_el",
  "IndexColumnField", "IndexColumnList", "TableName", "ColumnName",
  "OptTypeNameUri", "TypeNameUri", "ViewName", "TableNameList",
  "UpdateStmt", "TruncateStmt", "DeleteStmt", "TableRefs",
  "EscapedTableRef", "TableRef", "TableFactor", "PartitionNameListOpt",
  "PartitionNameList", "TableAsNameOpt", "TableAsName", "IndexHintListOpt",
  "ForceOrNot", "IndexHintList", "IndexHint", "IndexHintType",
  "KeyOrIndex", "KeyOrIndexOpt", "IndexHintScope", "IndexNameList",
  "AllIdentOrPrimary", "JoinTable", "JoinType", "OuterOpt", "CrossOpt",
  "LimitClause", "WhereClause", "WhereClauseOptional",
  "HavingClauseOptional", "OrderByOptional", "OrderBy", "GroupByOptional",
  "GroupBy", "ByList", "ByItem", "Order", "SelectStmtOpts",
  "SelectStmtBasic", "SelectStmtFromDual", "SelectStmtFromTable",
  "SelectStmt", "SelectLockOpt", "FromDual", "SelectStmtCalcFoundRows",
  "SelectStmtSQLCache", "SelectStmtStraightJoin", "SelectFieldList",
  "SelectField", "FieldAsNameOpt", "FieldAsName", "SubSelect", "UnionStmt",
  "UnionClauseList", "UnionSelect", "UnionOpt", "Expr", "FunctionCall",
  "CtorFuncExpr", "BuildInFun", "FuncDatetimePrecListOpt",
  "FunctionNameDateArithMultiForms", "FunctionNameDateArith",
  "FunctionNameSubstring", "TimestampUnit", "TimeUnit", "TrimDirection",
  "FunctionNameCurtime", "FunctionaNameCurdate", "FunctionaNameDateRelate",
  "FunctionCallNonKeyword", "FunctionCallKeyword", "SumExpr",
  "SeparatorOpt", "DistinctKwd", "DistinctOpt", "DefaultFalseDistinctOpt",
  "DefaultTrueDistinctOpt", "BuggyDefaultFalseDistinctOpt", "AllIdent",
  "NumLiteral", "Literal", "SimpleExpr", "FulltextSearchModifierOpt",
  "WhenClause", "WhenCaseList", "WhenCase", "ElseOpt", "Operators",
  "CompareOp", "CompareSubqueryExpr", "PredicateOp", "IsOrNot", "InOrNot",
  "AnyOrAll", "LikeOrNot", "LikeEscapeOpt", "RegexpOrNot", "BetweenOrNot",
  "CreateTableStmt", "IfNotExists", "IfExists", "TableElementListOpt",
  "TableElementList", "TableElement", "ColumnDef", "ColumnDefList",
  "ColumnOptionList", "ColumnOption", "SignedLiteral", "DefaultValue",
  "FunctionCallCurTimestamp", "FunctionNameCurTimestamp", "PrimaryOpt",
  "DefaultKwdOpt", "Constraint", "ConstraintKeywordOpt", "ConstraintElem",
  "GlobalOrLocal", "GlobalOrLocalOpt", "IndexName", "IndexOptionList",
  "AlgorithmOpt", "IndexLockOpt", "DropIndexOptNoneUsed", "IndexOption",
  "IndexType", "IndexTypeOpt", "CharsetKw", "CreateTableOptionListOpt",
  "TableOptionList", "TableOption", "PartitionOption",
  "PartitionOptionList", "PartitionOptionListOpt", "PartitionRange",
  "PartitionRangeList", "PartitionRangeListOpt", "InsertMethodOpt",
  "RowFormatOpt", "AlgorithmVal", "IndexLockVal", "IgnoreTableOption",
  "TablePartitionOpt", "EqOpt", "CreateViewStmt", "OrReplace",
  "ViewFieldList", "ViewSelectStmt", "SelectStmtWithClause", "WithClause",
  "WithList", "CommonTableExpr", "OptTagOption", "DropTableStmt",
  "TableOrTables", "RestrictOrCascadeOpt", "DropViewStmt",
  "RestoreTableStmt", "CreateDatabaseStmt", "DBName", "ResourceTag",
  "DatabaseOption", "DatabaseOptionListOpt", "DatabaseOptionList",
  "DropDatabaseStmt", "WorkOpt", "StartTransactionStmt",
  "CommitTransactionStmt", "RollbackTransactionStmt", "PragmaSetStmt",
  "VarAssignList", "VarAssignItem", "VarName", "TransactionChars",
  "TransactionChar", "IsolationLevel", "ShowStmt", "ShowIndexKwd",
  "FromOrIn", "ShowTargetFilterable", "ShowLikeOrWhereOpt", "GlobalScope",
  "OptFull", "ShowDatabaseNameOpt", "ShowTableAliasOpt", "AlterTableStmt",
  "AlterSpecList", "ColumnKwdOpt", "AsOrToOpt", "ColumnPosOpt",
  "AlterSpec", "AlterViewStmt", "NewPrepareStmt", "ExecPrepareStmt",
  "VarList", "DeallocPrepareStmt", "ExplainSym", "ExplainStmt", "KillStmt",
  "LoadDataStmt", "LocalOpt", "IgnoreLines", "DuplicateOpt", "Fields",
  "FieldsOrColumns", "FieldItemList", "FieldItem", "Lines", "Starting",
  "LinesTerminated", "ColumnNameOrUserVarListOptWithBrackets",
  "LoadDataSetSpecOpt", "ExplainableStmt", "CreateNamespaceStmt",
  "DropNamespaceStmt", "AlterNamespaceStmt", "NSName", "NamespaceOption",
  "NamespaceOptionListOpt", "NamespaceOptionList", "CreateUserStmt",
  "DropUserStmt", "AlterUserStmt", "UserSpecList", "UserSpec", "Username",
  "OptionalBraces", "AuthOption", "AuthString", "NamespaceOpt",
  "GrantStmt", "RevokeStmt", "PrivTypeList", "PrivType", "SqlACL",
  "PrivLevel", "WithGrantOptionOpt", "opt_array_bounds", "TypeStmt",
  "ColId", "colid_type_list", "type_list", "SimpleTypename",
  "NumericTypename", "FloatTypeStmt", "IntegerTypeStmt",
  "DateAndTimeTypename", "TimestampPprecision", "DateTimePprecision",
  "CharacterType", "GenericType", "type_name_token", "opt_type_modifiers",
  "opt_const_expr_list_opt_comma", "const_expr_list_opt_comma",
  "const_expr_list", "const_expr", "MapPair", "MapArgList",
  "MapArgListOptComma", "OptMapArgListOptComma", "DictPair", "OptDictPair",
  "DictPairList", "DictPairListOptComma", "OptDictPairListOptComma",
  "ArrayExprList", "ArrayExprListOptComma", "OptArrayExprListOptComma",
  "Fieldkey", "EnumOpt", "EnumElement", "EnumElementList",
  "EnumElementListOptComma", "OptCollate", "StringName", "OptCharset",
  "CreateTypeStmt", "TypeScope", YY_NULLPTR
};
#endif

# ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
   (internal) symbol number NUM (which must be that of a token).  */
static const yytype_int16 yytoknum[] =
{
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
     535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
     545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
     565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
     575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
     605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
     625,   626,   627,   628,   629,   630,   631,   632,   633,   634,
     635,   636,   637,   638,   639,   640,   641,   642,   643,   644,
     645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
     655,   656,   657,   658,   659,   660,   661,   662,   663,   664,
     665,   666,   667,   668,   669,   670,   671,   672,   673,   674,
     675,   676,   677,   678,   679,   680,   681,   682,   683,   684,
     685,   686,   687,   688,   689,   690,   691,   692,   693,   694,
     695,   696,   697,   698,   124,    38,    43,    45,    42,    47,
      94,   126,   699,    46,    40,   700,    44,    59,    41,    91,
      93,   123,   125,   701,    64
};
# endif

#define YYPACT_NINF (-1979)

#define yypact_value_is_default(Yyn) \
  ((Yyn) == YYPACT_NINF)

#define YYTABLE_NINF (-1001)

#define yytable_value_is_error(Yyn) \
  0

  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     STATE-NUM.  */
static const yytype_int16 yypact[] =
{
    9233,   224,  -203,  -203,  -203,   117,  -203,   584, -1979, -1979,
      21,   326, -1979,  -203,  1469,   796,    49,   584,  -203,  -203,
    -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,  -203,
    -203,  -203,  -203,  -203,  -203,   -67,    23,  -203,  -203,  -203,
     584,  1469,   166,  -162,   160, 18974,  -203,  -203,  -100,   584,
     166,   228, -1979,   796,    56, 26696, 26696,  -203,   232, 26696,
      35,    49,   -68,   -51,   -38,   -32, 26108,  -203,  -203,  -203,
   -1979,   315,    78, -1979, -1979, -1979, -1979, -1979, -1979,   174,
     226,   311,   303, -1979,   329, -1979, -1979, -1979, -1979,    41,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979,    86, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979,  -203, -1979, -1979,   454,   454,
   26696,   380,   356,   423,   146,   146,   470, -1979, -1979,   470,
     458,   470,   346,   470,   470,   -46,   235, -1979, -1979, -1979,
   -1979,   323,  -203, -1979,   454, 26696,   454, -1979, 26696, -1979,
     454,   454,   454, -1979,   337,   328,   427, -1979, -1979,   548,
   -1979, -1979,   322, -1979, -1979,    98, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979,   -11, -1979, -1979,    13, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,  -203, -1979,
   -1979, -1979, -1979, -1979,  -203, -1979,   618,   525, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979,   257,   278, -1979,   448,   603, -1979,
   -1979,   705,    20,   330,   718, 18975, 19553,   638,   112, -1979,
   -1979, -1979, -1979,   437,   457, -1979, -1979, -1979,   624,   465,
   -1979, -1979,   495, -1979, -1979, -1979, -1979, -1979,   624, -1979,
   -1979,   624,   208,   256,   384,   656,   661, 26696,   618, 26696,
     622,   622,   111,  -203, -1979, 26696, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979,   414,   439,   732, -1979,
    -203,  -203,   845, 26696,  -203, -1979, 18975, 18975, 26696,   461,
   26696,   781,   453, -1979, -1979, -1979,   449, -1979,  9233, 19213,
     897,   226, -1979,   756, 16547,   402,   226,   718,   303, -1979,
     528, -1979, -1979, -1979, -1979,   303, -1979, -1979, -1979,   488,
   -1979,   907, 26696, 20187, -1979,   501, 26696, -1979, -1979,   500,
   -1979,   506, -1979, -1979, 24627,   959,   959,   870, 26696, 26696,
   -1979, 26696, -1979,   -46,   138, 20187, -1979, -1979, -1979, 26696,
   26696, -1979,   618, -1979, 26696, -1979,   871, 26696, -1979, 20187,
   26696, 26696, -1979, -1979, -1979, -1979,   641, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, 23157,  1469, -1979, -1979,   875,
   -1979, -1979, -1979, -1979,   958, -1979, -1979, 26696, 23157,   586,
   -1979, -1979, -1979,  7928, -1979, -1979,   584,   571,  -132, 26696,
   26990, 27284,   778, -1979, 26696,   596, -1979,   306, -1979, 26696,
   26696, 26696, -1979,   624, -1979, -1979, 26696, -1979, -1979, -1979,
   -1979, 26696, 16547, 16143, -1979, -1979, -1979,   624,   624, -1979,
     624, -1979, -1979, -1979, 18975,   190, 21099,   166,   601, -1979,
   -1979, -1979, -1979,   759, -1979, -1979, -1979, 24921, 26696, 27578,
     146,   146, 25215, -1979,   606, -1979,   620, -1979,   273,   305,
     634,   781,   628, -1979, 26696, -1979, -1979, -1979, 20805, 26696,
     781,    -9, -1979,  1118, -1979, -1979, 16143,   402, 16143, -1979,
   -1979, 12273,   639,   652,   653,   654,   655, -1979,   659,   660,
     668,   671,   672, 16547, -1979,   673,   674,   649, -1979,   675,
     683,   676,   699,   685,   686,   682,   691,   693,   698,   701,
   21393,   703,   704,   324,   707,   708,   709,   711,   712,   713,
     719,   720,   681,   692, 21687,   736,   722,   724,   725,   726,
     727,   730,   738,   741,   744,   745,   747, -1979,   748,   750,
     755,   762, -1979, -1979,   763,   764,   765,   766,   767,   772,
     773,   774,   777,   779,   783,   785,   786,   788,   789,   790,
     791, 16547,   793, -1979, -1979, -1979, -1979, 16547, 16547, 16547,
   11843, 16143, -1979,   700, -1979, -1979,   700, -1979, -1979,   797,
     801,   805,   806,   807,   809, -1979, -1979, -1979,   760, -1979,
   -1979,  -104,   812,  1072,  1174, -1979,   402,   131, -1979, -1979,
     828,   -36, -1979, -1979, 26696,   817, -1979, -1979,    24, -1979,
    1006,   813, 26696,  1265, 28286, -1979,   356, -1979, 24627, -1979,
   -1979,  1234, -1979,   113, 26696,   827, 26696, -1979, -1979, -1979,
   -1979, 26696,    24,  1119,   501, 25814, -1979, 26696, -1979,   829,
     249,    72, -1979,   831,   833,  1135, -1979, -1979,   705,   851,
     781,  1244,   838, 16143, -1979, 26696,   179,   841, -1979, 16958,
     846,  1362, -1979, -1979, -1979,  1156, -1979, -1979,   778, -1979,
     778, -1979,  1026,   868, -1979, -1979, 19893, 12703, 16143, -1979,
   -1979, -1979, -1979, -1979, -1979,   121, -1979, 17538, 26696,   624,
     624, -1979, -1979, 26696, -1979,    32,  1104, 26696, 26696,   622,
   -1979, -1979,   912, -1979,   876,   869,   880, 26696, 26696, -1979,
     881,   959,   959, -1979, -1979, 26696, 18975, 18975, -1979, -1979,
   -1979, -1979, 26696,   883, 20805,   333,   886,   889,    41, 22569,
   18568, 21099,  1282,  1250, -1979,  1259, -1979, -1979, -1979, 22569,
     537,  1232, 22569,   895, -1979, 10187, -1979, 17538, 16143, 17371,
    1108,   152, -1979, 16143, 16143,   896, 26696,    18, -1979, 16143,
   16143, 16143, 26696, 16143, -1979, 16143, 16143, 16143, 24921, 26696,
   -1979, -1979, 16143, 16143,   718,   898, -1979, 16143, 16143, 24921,
   16143, 16143, 16143, 16143, 16143, 16143, 16143,  8365, 16143, 24921,
     899,   900,   904, 16143,  3425,  3855,  4285, 16143,  2988,  3665,
     718,   718,   718,   265,   299, 16143,   905,  1197,  1197,   718,
     920,   908, 11413, 16143, -1979, 13133, -1979, -1979, -1979, 11843,
     909,   910,   911,   913,  2341,    41, 17538,   914, -1979,   915,
   13563, -1979,   700, -1979, -1979, 16143, 16143, 16143,   920,   918,
   16143, 26696, 16547, 16547,   302, -1979,  1036, -1979,   315,   174,
     311, -1979, -1979,    99,   919, -1979,   955, -1979, -1979, 21981,
     923, -1979, 26696, 20187, -1979,  1369, -1979, 24627,   926,   931,
   -1979,    41,  1321,  1370, -1979,   217,   955,  1379,   247,   955,
     955,   955,   955,   955,   955,   955,   955,   955,   955,   955,
     955,   955,   955,   237,   955,   955,   346,   955,   955,   955,
     955,   955,   195,   171,   122, -1979, -1979,   937, -1979, -1979,
   -1979, -1979,   955,   193, -1979, -1979,   120, -1979, 17834,  1119,
     267, -1979,   383, -1979,  1281,  1389, 26696,    68,  1349, -1979,
   -1979, -1979, -1979,   954, 23451, 20187, 26696,   214,    37, 20187,
   -1979, -1979, 16143, -1979,  1344,   956,  7928, 16143, 25509, 24627,
    1298, 16143, 16143, 16143, -1979, 16143, -1979, -1979, -1979, -1979,
   -1979, 16143, 16143, -1979, 16143, 16143, 13993, 14423, 16143, 16143,
   16143, -1979, -1979, -1979,  4715,   125, 23745, -1979, -1979, 16547,
     688, -1979, -1979,   964, 16547, 16547, 16547, -1979,   515,   488,
     868,   868,    90,   778, -1979,   654, -1979, 17538, 17538, 26696,
   -1979, -1979, -1979, 18975,   488, 26696, 26696,  1412,   965, -1979,
   -1979, -1979,   987, -1979, 24921, -1979, 26696, 27578, -1979, -1979,
   -1979,   968, -1979,   488,   488,   488,   343, -1979, 26696,   969,
   -1979, 18568, 18568,   970,   972,    77, 26696,   250, -1979, -1979,
   -1979,  1419,  1376, -1979, -1979, -1979,  1320,  1346, 22569,  1232,
   -1979,  1347,   864, 16143, -1979, -1979, -1979, 17404,  1193, -1979,
   16143, -1979, -1979,   363, 17538,  7604, -1979,   981,    18,   911,
    9270,  9307,  9344,   370,  9380,  9421,  9457,   980, -1979,   984,
    1030,   992,   991,  2468,  1449, -1979, 16143,   444,  9496,   995,
   -1979,  1003, -1979,  1001,  2528,  2662,  5126,  1008,  5164,  5202,
     388, 16143, 10154, -1979,  1010, -1979,  1005,  1009,  1014,  8795,
   24921, -1979,  1785, 16143,  5240, 16143,  5278, 16143,  5316, 17415,
   16143,  1012,  5354, 16143, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979,  1427, 16143, 16143, 16143,  1024, -1979,
    1025, -1979, 17448, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979,  1031,  1032, 16143, -1979,  1033, -1979, -1979,
   -1979, -1979,  2080, 14853,  5392, -1979,   389,  1037, 16143, -1979,
   -1979, -1979,   700,  1038,  1040, 16143, -1979, 10537,   625, -1979,
    9532,  9573,  9228,  1041, -1979,  5430,  1027, -1979, -1979,  1042,
   -1979,  1209,  1046,   226,   226, -1979, -1979, -1979, 16143, 26696,
   -1979, -1979, -1979, -1979,  1068, -1979, -1979, 26696,   303, -1979,
   -1979,  1353, 26696, 26696,  1489, 26696,   186, -1979, 22863, -1979,
   26696, 26696,   346, 26696, 26696, 26696,    85,    63, -1979, 26696,
   -1979, 26696,  1074,   438,  1076,   438,  1077,  1078,  1084,   438,
    1087, 24627,  1088,     9,  1090,  1093,  1378, 26696, 26696,   438,
     438, 26696,   172,  1096,   137,   145,   438, 26696,   955,   955,
   18971, -1979, 28286,  1097,   955,   955, -1979, 18975,  1086,  1073,
   -1979, -1979, -1979,   186,  1428, 18975,   -45, -1979, -1979, 26696,
      41,   781, 21099, -1979,   107, -1979, -1979, -1979,   -15,   781,
   -1979, -1979,  1478, 26696, -1979, -1979, 22275, -1979,  1095,   303,
   -1979,    24,   411, -1979,   222, -1979, -1979,  2408, -1979, -1979,
   -1979, -1979,    57,   321,   321,    57,   212,   212,   357,   472,
   16143,   101, 16143,   101,    57,    57,  1531, -1979,  1102,  1103,
     207,   655, -1979, -1979, -1979, -1979, -1979,  1101,  1099, -1979,
   -1979, -1979, -1979, 11843, -1979,  1099, -1979,  1552, -1979, -1979,
    1418,     5,  1438, -1979, -1979, -1979, -1979, -1979,    28, -1979,
     460,    28,   655, 26696, -1979, -1979,  1111, -1979, -1979, 26696,
   -1979, -1979, 18568, -1979, -1979, 18568, 18568, -1979, -1979,   346,
     346,   346, -1979,   250, -1979,  1517, 16143, 16143, -1979, 16143,
   22569, -1979,  1477, 22569, 16143,  1113, -1979, 16143, -1979, 17538,
   16143, -1979,   605, -1979, 16143, 16143, 16143,  1372, 16143, 16143,
   16143, -1979, -1979, 16143, -1979, -1979, -1979, -1979,  5499,  1112,
    1114, 16143, -1979, 24921, -1979, -1979, -1979, -1979, 16143, -1979,
   -1979, -1979, 17491, 16143,  8365, -1979, -1979, -1979, -1979, 10154,
     760,  1115,  1116,  1117,  1122, 16143, -1979,  5713, -1979,  5789,
   -1979,  5842, -1979,   615,  5883, -1979, -1979,   459, 16143,    11,
    5921,  5959, -1979, -1979, 16143, 16143, 16143,  5997, -1979, 16143,
   -1979, 16143, 17527, -1979, -1979,  1416,  6048, -1979, -1979, -1979,
   17538, -1979,  1977, 10975, -1979, 15283,  1510, 16143, 16143, -1979,
   -1979, 26696, -1979, -1979,   263,   402,   402, 17538, -1979, -1979,
   -1979, -1979, 26696, -1979,  1421,   186, -1979, -1979,  1126,   346,
     346,  1491,   346,   346, 27872, -1979, 26696,   197, 26696, -1979,
   26696, -1979,  1349, -1979, -1979, -1979,  1132,  1137, -1979,  1436,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, 26696,  1371,
     197, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, 24627, 24627,
   -1979, -1979, -1979, 24627, 24627,  1100,  1976, 20511, -1979, 26696,
   -1979,  1153,  1154,  1141, -1979,   756,    -9,   955,   955, -1979,
   -1979, -1979,  1544,  1492,    37,  1455,  1146,  1148,  1151,  1157,
   16143,  1160, -1979, 18201,   712, 11843,   469, -1979, 17309, 17309,
   -1979, 24039,  1165, -1979,   474, -1979, 16547, -1979, -1979, -1979,
   -1979, -1979, 26696, -1979, -1979, -1979, 16143,   311, -1979, -1979,
   26696,   488, -1979, -1979, -1979, -1979, -1979, -1979, -1979,   610,
    1163,   895, 17538, 17538, -1979, 22569,  1071, 17538, 26696, 17538,
   17538,  1161,  1162,    60,  1164,  1166,    75,  1167,  9691,  9843,
    6086,  1172,  6161,  9892,  6202, 17538, -1979, -1979, -1979,  6318,
   -1979,  6367, 16143, 17538, -1979, -1979, -1979, -1979, -1979,  6431,
   -1979, -1979, -1979,  1169,  1170,    83,  1173,  1175,    94,  1176,
   -1979, -1979,  6480,  1290, -1979, -1979,  6521,  9982, 10018, -1979,
    6573,  6611, 16143, -1979, -1979, -1979,  1590, 16143,  6662, 16143,
    2241,  2288,  1168,   226,  1475,  1479,   197,   -86, -1979, 16143,
   26696, 27872,  1119, 26696, 26696,   -17,   -12, 26696,  1119, -1979,
     477, 26696, -1979, -1979,   197, -1979, -1979, 16143, 16143, 26696,
      28,   955, -1979,  1371, -1979, -1979, -1979, -1979, -1979, -1979,
    1185, 24627,  1022,  1530, -1979,  1483,  1554, -1979, -1979,  1206,
    1034, -1979,  1556, -1979,  1829, -1979,  1194, -1979, -1979, 26696,
     311, -1979,    59,    69,  1532, -1979,  1535, 26696,   240,  1416,
   -1979,   487,  1196, -1979,   -99, -1979, -1979, -1979, -1979,  1198,
   -1979, -1979, -1979, -1979, 17538,   226, -1979,  1639, -1979,  1640,
   26402, -1979, 16143,  1200,   494, -1979, -1979,  1199, -1979, -1979,
   -1979,  1201, -1979, -1979, 16143, 16143, -1979, 16547, -1979, 16143,
   -1979, -1979, -1979,  1417, -1979, -1979, -1979,  1202, -1979, -1979,
   -1979,  1203, -1979, -1979, -1979,  1216,  1205, -1979, 16143, 16143,
   -1979, -1979,  6711, 16143, -1979, 17309, -1979, 17309, 16143, -1979,
   16143, -1979, 26696,   402, -1979,  1311, 16143,  6775,  1214, 26696,
    1119,  1217,  1218,  1219,  1119,  1220, 26696, -1979, -1979, -1979,
    6865,  6957, -1979, -1979,  1231, -1979, 16143, -1979,  1221,   438,
     438, -1979, -1979, -1979, -1979,  1222, -1979,   425, -1979, -1979,
   -1979, -1979, 26696,   236,   505,  1223,   226, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
    1437, -1979,   146,   315,  1095,   303, -1979, -1979, 16143, 16143,
   -1979, 24333, -1979, -1979, -1979, -1979,   509, -1979, -1979, 17538,
   26696, -1979, -1979, -1979,  7006, 10055,  1619,  7055, -1979, -1979,
   -1979, -1979, -1979,  7096,  7145, -1979,  2022,  1225,  1226,  7211,
    7252, -1979, -1979,    19, 10098, -1979, 26696,  1119,  1227, 26696,
   26696, 26696,  1233, 26696, -1979,  1235,  1385, -1979,  7301,   292,
   -1979, -1979,   300, -1979,   517, -1979, 26696, -1979,  1252, -1979,
    1598,   162,  1236,  1160,   532, -1979, 26402, -1979,   539, -1979,
   16143,    42,  1237, -1979, -1979, -1979, -1979, -1979, -1979, -1979,
   -1979,  1371, 16143, 15713,   549,  1239, 26696,   553,   554,   568,
   26696,   574,  1571,  1258, -1979, -1979,  1242, -1979,  1243, -1979,
     236,   183,  1245,  1537, -1979, -1979,  1605,   567,  1416, -1979,
   -1979, -1979,  7350,  1429,  1422,  1423, -1979, -1979,  7439,  1246,
    7489, -1979, 26696,   577, -1979, -1979, -1979,   578, -1979, -1979,
    1253,  1255, -1979, -1979, -1979,   183,  1271,   955, -1979, -1979,
   -1979, -1979, -1979, 26696,  1568,  1654,  1702,  1704,  1705,  1678,
     567, -1979, -1979,  1439, -1979, -1979,  1371,  1371,  1371,   183,
     630, -1979,   183,   183,   183, -1979,   183,  1571, -1979, -1979,
    1283,  1146,  1709,  1578,  1289,  1272,  1292,  1293,  1296,  1723,
   -1979, -1979, -1979, -1979, -1979, -1979,   183,   183, -1979, -1979,
    1301,  1728, -1979,  1645, 26696,  1606, -1979, -1979, -1979,  1306,
     183, -1979,  1307, -1979,  1291, 26696, -1979, -1979, -1979, -1979,
    1146
};

  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     Performed when YYTABLE does not specify something else to do.  Zero
     means the default is an error.  */
static const yytype_int16 yydefact[] =
{
       0,    49,  1229,  1229,  1229,   882,  1229,    45,  1032,  1031,
    1229,     0,  1030,  1229,     0,  1229,  1229,    45,  1229,  1229,
    1229,  1229,  1229,  1229,  1229,  1229,  1229,  1229,  1229,  1229,
    1229,  1229,  1229,  1229,  1229,     0,     0,  1229,  1229,  1229,
      45,     0,   894,     0,     0,   981,  1229,  1229,     0,    45,
     894,     0,  1166,  1229,     0,     0,     0,  1229,     0,     0,
       0,  1229,     0,     0,     0,     0,     0,  1229,  1229,  1229,
    1227,     0,     0,     2,     5,     6,     7,     9,     8,   200,
     191,   200,    12,    13,     0,   252,    10,    11,    40,     0,
      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
      24,    25,    26,    27,    28,     0,    29,    30,    31,    32,
      33,    34,    35,    36,    37,    38,    39,    42,  1146,  1160,
    1165,  1164,  1161,  1162,  1163,  1229,    41,    50,   733,   733,
       0,     0,  1231,  1197,  1274,  1274,   731,   161,   160,   731,
       0,   731,   162,   731,   731,   790,     0,  1167,    48,    47,
      46,    53,  1229,  1174,   733,     0,   733,   897,     0,   898,
     733,   733,   733,  1173,  1104,  1106,  1108,  1114,  1115,     0,
    1120,  1121,     0,  1125,  1129,     0,  1134,  1135,  1136,  1116,
    1117,  1118,  1123,  1124,  1126,     0,  1132,  1133,     0,  1101,
    1103,  1217,  1216,  1211,  1212,  1213,  1215,  1214,  1229,  1201,
    1207,  1208,  1209,  1210,  1229,  1205,    49,  1189,  1177,  1178,
    1179,  1180,  1181,  1182,  1183,  1184,  1185,  1186,  1187,  1188,
    1169,  1170,  1171,  1172,     0,     0,  1035,  1039,  1195,  1168,
    1176,    55,     0,     0,   423,     0,     0,     0,     0,   958,
     982,   952,   954,     0,     0,   810,   969,   957,   983,     0,
     947,   953,     0,   974,   951,   950,   980,   979,   983,   966,
     959,     0,   975,     0,     0,  1193,  1191,     0,    49,     0,
     915,   915,   915,  1229,  1199,     0,   496,   528,   430,   431,
     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
     442,   443,   444,   446,   445,   447,   448,   449,   450,   451,
     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
     492,   493,   494,   495,   497,   498,   499,   500,   501,   502,
     503,   504,   505,   507,   506,   508,   509,   510,   511,   512,
     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
     523,   524,   525,   526,   527,   529,   530,   531,   532,   533,
     534,   535,   536,   537,   538,   539,   540,   541,   542,   543,
     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
     574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
     584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
     594,   595,   596,   597,   598,   599,   600,   601,   602,   603,
     604,   605,   606,   607,   608,   609,   610,   611,   612,   613,
     614,   615,   616,   617,   618,   619,   620,   621,   622,   623,
     624,   625,   626,   627,   628,   629,   630,   631,   632,   633,
     634,   635,   636,   637,   638,   429,     0,   117,  1024,  1222,
    1229,  1229,     0,     0,  1229,  1203,     0,     0,     0,     0,
       0,   142,   108,  1223,  1224,  1225,     0,     1,     4,     0,
       0,   191,   201,   196,     0,   219,   191,   425,   888,   889,
       0,  1070,  1071,  1069,  1068,  1066,  1067,  1072,  1033,  1147,
    1226,     0,     0,     0,   121,   884,     0,  1236,  1237,     0,
    1230,  1232,  1234,  1198,     0,  1270,  1270,     0,     0,     0,
     883,     0,   163,   790,  1283,     0,   789,   788,   791,     0,
       0,    54,    49,  1175,     0,   792,     0,     0,  1029,     0,
       0,     0,  1105,  1107,  1109,  1110,     0,  1112,  1113,  1119,
    1122,  1130,  1131,  1127,  1128,     0,     0,  1202,  1206,    51,
    1190,  1036,  1037,  1040,     0,  1196,    56,     0,     0,     0,
     421,   419,   420,     0,   422,   424,    45,     0,   810,   512,
     565,   581,   591,   932,     0,   921,   925,     0,   809,     0,
       0,     0,   971,   983,   955,   956,     0,   973,   972,   948,
     970,     0,     0,     0,   943,   968,   967,     0,     0,   949,
     983,  1194,  1192,  1155,     0,     0,     0,   894,   890,   892,
     916,   919,   920,     0,   918,  1200,  1028,     0,     0,     0,
    1274,  1274,     0,   122,   903,  1204,     0,  1158,     0,     0,
       0,   142,     0,   127,     0,   255,     3,   222,     0,     0,
     142,   196,   130,   132,   134,   135,     0,   219,     0,   197,
     214,     0,     0,     0,     0,     0,     0,   643,     0,     0,
       0,     0,     0,     0,   641,     0,     0,     0,   642,     0,
       0,     0,     0,   335,   333,     0,   435,   439,   466,   468,
     483,   495,   500,   508,   517,   519,   522,   545,   557,   560,
     588,   589,     0,     0,     0,     0,   596,   602,   603,   604,
     605,   606,   607,   608,   609,   610,   611,   768,   612,   613,
     614,   615,   769,   770,   616,   617,   618,   619,   620,   621,
     622,   627,   628,   629,   630,   631,   632,   633,   634,   635,
       0,     0,   429,   640,   649,   639,   645,     0,     0,     0,
       0,  1260,   651,    93,    92,   653,    93,   261,   260,     0,
       0,     0,     0,     0,     0,   280,   281,   279,   111,   644,
     648,   192,   398,     0,     0,   217,   219,     0,   426,   256,
       0,     0,   734,  1076,  1078,  1092,  1272,  1273,  1097,  1086,
    1094,  1089,    84,     0,   773,  1228,  1233,  1275,     0,  1221,
    1219,     0,   905,   773,  1078,     0,     0,  1281,  1280,  1282,
    1279,     0,  1097,   807,   884,     0,   914,     0,  1074,  1084,
     899,   899,  1111,  1137,  1141,     0,  1102,    52,    55,     0,
     142,     0,     0,     0,   232,     0,   651,   213,   230,   238,
     111,   259,   257,   674,   258,   228,  1146,   935,   591,   934,
     591,   933,     0,   924,   936,   931,     0,     0,     0,   946,
     944,   945,   961,   984,   962,   108,   976,   977,     0,   983,
     983,   960,  1156,     0,  1146,     0,   132,    86,     0,   915,
    1261,  1262,  1264,  1266,  1268,     0,   118,   565,   581,  1026,
    1025,  1270,  1270,  1022,  1023,     0,     0,     0,  1146,  1146,
    1146,   126,     0,   109,     0,     0,   254,     0,     0,     0,
     146,     0,   203,     0,   185,     0,   188,   183,   184,     0,
       0,   186,     0,   202,   206,   209,   216,   195,     0,     0,
       0,   672,   669,     0,     0,     0,     0,     0,   654,     0,
       0,     0,     0,     0,   657,     0,     0,  1260,  1247,     0,
     646,   647,  1260,     0,   423,     0,   116,     0,  1260,  1254,
       0,     0,     0,     0,     0,     0,     0,  1245,  1260,  1254,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     423,   423,   423,     0,     0,     0,     0,     0,     0,   423,
     282,     0,     0,     0,   658,     0,   656,   655,   660,     0,
       0,   254,   653,     0,    82,     0,  1255,  1257,  1259,     0,
       0,   650,    94,    95,   652,     0,     0,     0,   282,     0,
       0,     0,     0,     0,     0,   220,     0,   218,     0,   200,
     200,   254,   253,     0,     0,  1144,   879,  1080,  1075,  1079,
       0,  1091,     0,     0,  1085,     0,  1088,     0,     0,    85,
      90,     0,   992,   992,   774,   992,   879,     0,   994,   879,
     879,   879,   879,   879,   879,   879,   879,   879,   879,   879,
     879,   879,   879,   992,   879,   879,     0,   879,   879,   879,
     879,   879,   994,     0,   773,   813,   825,   986,   990,  1235,
    1271,   732,   879,     0,   912,   904,   773,  1073,   776,   807,
       0,  1083,     0,   808,     0,     0,     0,     0,   152,   901,
     900,   902,   896,     0,     0,     0,     0,  1043,     0,     0,
     895,   692,     0,   715,     0,     0,     0,     0,     0,     0,
     713,     0,     0,     0,   699,     0,   694,   695,   696,   697,
     698,     0,     0,   242,     0,     0,     0,     0,     0,     0,
       0,   236,   239,   240,     0,     0,     0,   728,   720,     0,
       0,   724,   725,     0,     0,     0,     0,   229,   225,  1149,
     923,   922,     0,     0,   926,   929,   928,   927,   930,     0,
     985,   964,   965,     0,  1151,     0,     0,     0,    87,    88,
     891,   917,     0,  1265,  1269,  1154,     0,     0,  1220,  1218,
     123,     0,  1159,  1150,  1152,  1153,     0,   144,     0,   254,
     141,     0,     0,   254,     0,     0,     0,   150,   147,   148,
     131,     0,   198,   204,   189,   190,   178,     0,     0,   186,
     187,     0,   173,     0,   210,   211,   208,     0,     0,   663,
       0,   670,   668,     0,    82,     0,   396,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1248,     0,
       0,     0,     0,     0,   422,   427,     0,     0,     0,     0,
    1249,  1251,  1253,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1240,  1242,  1244,     0,     0,     0,  1245,
    1254,   371,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   318,   315,   317,   316,   312,   314,
     313,   310,   311,   309,   319,   304,   303,   300,   302,   306,
     307,   301,   305,   308,     0,     0,     0,     0,     0,   345,
       0,   347,     0,   373,   295,   294,   291,   293,   297,   298,
     292,   296,   299,     0,     0,     0,   283,     0,   372,   320,
     321,   322,     0,     0,     0,   262,     0,   254,     0,   244,
     246,   245,    93,   254,     0,  1258,   271,     0,     0,    96,
       0,     0,     0,     0,   334,     0,   112,   194,   193,     0,
     399,     0,     0,   191,   191,  1034,  1145,   880,     0,     0,
    1081,  1093,  1098,  1087,     0,  1090,   885,     0,   886,   887,
    1021,   993,   777,     0,   776,     0,     0,  1017,     0,   993,
       0,     0,     0,     0,     0,     0,     0,     0,   995,     0,
     996,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   993,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   879,   879,
     773,   814,   773,     0,   879,   879,   913,     0,     0,   736,
     737,   739,   740,     0,     0,     0,     0,   805,   806,     0,
       0,   142,     0,   153,   797,  1138,  1139,  1140,  1142,   142,
    1044,  1045,     0,     0,    68,    67,    84,    44,     0,    62,
      64,  1097,     0,   716,     0,   707,   231,   689,   243,   241,
     693,   714,   681,   690,   691,   682,   683,   684,   686,   685,
       0,   675,     0,   676,   679,   680,   687,   719,   434,   580,
     688,     0,   703,   701,   702,   704,   233,   112,   722,   729,
     721,   726,   727,     0,   708,   722,   711,     0,   226,   227,
     223,     0,     0,   942,   938,   937,   963,  1157,   196,    71,
       0,   196,     0,     0,  1263,  1267,   119,  1027,  1146,     0,
     143,   110,   255,   137,   138,     0,     0,   133,   149,     0,
       0,     0,   136,   151,   154,   164,     0,     0,   215,     0,
       0,   180,     0,     0,     0,     0,   207,     0,   662,   673,
       0,   390,     0,   397,     0,     0,     0,     0,     0,     0,
       0,   274,   270,     0,   391,   272,   389,   428,     0,     0,
       0,     0,   275,  1252,   267,   343,   339,   342,     0,   340,
     341,   349,     0,     0,  1243,   269,   273,   268,   645,  1255,
     111,     0,     0,     0,     0,     0,   338,     0,   402,     0,
     404,     0,   406,     0,     0,   411,   410,     0,     0,   200,
       0,     0,   346,   348,     0,     0,     0,     0,   344,     0,
     382,     0,     0,   416,   263,   244,    83,   661,   247,   248,
    1256,   100,     0,     0,    97,     0,     0,     0,     0,   332,
     336,     0,   400,   221,   200,   219,   219,  1077,  1082,  1096,
    1095,    91,     0,   778,     0,     0,   906,  1013,     0,   162,
     162,     0,   162,   162,     0,  1008,     0,   997,     0,  1018,
       0,  1014,   152,  1004,   868,   867,     0,     0,   824,     0,
    1006,   819,   876,   821,   864,   820,   875,   874,   873,   869,
     816,   870,   840,   841,   839,   872,   822,   823,     0,   829,
     997,   865,   866,  1012,   842,   847,   845,   843,   844,   846,
     858,   871,   860,   859,   862,   861,   863,  1007,     0,     0,
     815,   991,   909,     0,     0,   744,   773,   776,   775,     0,
    1276,     0,     0,     0,   881,   196,   196,   879,   879,   798,
     799,   989,     0,  1097,     0,     0,    66,     0,   254,     0,
       0,    65,  1100,   238,     0,     0,     0,    78,     0,     0,
     700,     0,     0,   710,     0,   709,     0,   224,   212,   940,
     941,   939,     0,   125,    74,    75,     0,   200,   893,    89,
       0,  1148,   145,   139,   140,   159,   158,   157,   155,     0,
       0,   205,   199,   179,   181,     0,     0,   174,     0,   671,
      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1246,   401,   264,   265,     0,
    1250,    83,     0,  1239,  1241,   278,   276,   277,   266,     0,
     403,   405,   407,     0,     0,     0,     0,     0,     0,     0,
     409,   408,     0,   417,   412,   413,     0,     0,     0,   414,
       0,     0,     0,    80,    99,    98,     0,     0,     0,     0,
       0,     0,   113,   191,   249,   250,   997,     0,  1009,     0,
       0,     0,   807,     0,     0,   789,   788,     0,   807,   742,
       0,     0,   998,  1001,   997,  1011,  1010,     0,     0,     0,
     196,   879,   827,   830,  1019,  1016,   818,   817,   908,   907,
       0,     0,     0,     0,   748,     0,   751,   772,   749,     0,
     741,   745,     0,   730,   773,   738,     0,  1278,  1277,     0,
     200,   129,     0,     0,     0,  1099,    69,     0,     0,    61,
      63,     0,     0,   237,     0,   706,   677,   678,   234,   113,
     723,   705,   712,    72,    73,   191,   120,     0,   165,     0,
     168,   182,     0,     0,     0,   367,   369,     0,   364,   353,
     355,     0,   360,   357,     0,     0,   392,     0,   386,     0,
     393,   387,    81,     0,   337,   368,   370,     0,   366,   354,
     356,     0,   362,   358,   374,     0,     0,   375,     0,     0,
     383,   384,     0,     0,   101,     0,   350,     0,     0,   377,
       0,   376,     0,   219,  1002,     0,     0,     0,     0,     0,
     807,     0,     0,     0,   807,     0,     0,  1003,   999,  1020,
       0,     0,  1005,  1015,     0,   828,     0,   757,     0,     0,
       0,   758,   762,   753,   761,   765,   747,     0,   752,   756,
     746,   750,     0,   106,     0,   103,   191,   853,   856,   854,
     855,   857,   796,   848,   851,   850,   849,   852,   795,  1143,
       0,    43,  1274,     0,     0,    58,    60,    76,     0,     0,
      79,     0,   124,   167,   166,   172,     0,   169,   171,   176,
       0,   175,   363,   359,     0,     0,   664,     0,  1238,   365,
     361,   418,   415,     0,     0,   385,     0,     0,     0,     0,
       0,   114,   251,     0,     0,   787,     0,   807,     0,     0,
       0,     0,     0,     0,   743,     0,     0,   826,     0,     0,
     759,   760,     0,   755,     0,   105,     0,   793,     0,   128,
       0,  1046,     0,    57,     0,   235,     0,   156,     0,   395,
       0,     0,     0,   394,   380,   381,   102,   351,   352,   379,
     378,   829,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   837,     0,   754,   763,     0,   766,     0,   793,
     107,   987,     0,     0,  1049,  1048,  1056,     0,    59,    77,
     170,   177,     0,     0,     0,     0,   659,   832,     0,     0,
       0,   793,     0,     0,   793,   793,   793,     0,   793,   835,
     838,     0,   878,   764,   767,   988,     0,   879,   803,   804,
     794,   801,   104,     0,  1058,  1041,     0,     0,     0,     0,
    1047,  1050,   388,     0,   666,   667,   829,   829,   829,   780,
       0,   793,   779,   786,   781,   793,   782,     0,   877,   802,
       0,    70,     0,  1060,     0,  1062,     0,     0,     0,     0,
    1051,   665,   831,   834,   833,   793,   783,   784,   836,   800,
       0,     0,  1057,     0,    84,  1064,  1054,  1055,  1052,     0,
     785,  1059,     0,  1042,     0,     0,  1038,  1053,  1061,  1063,
    1065
};

  /* YYPGOTO[NTERM-NUM].  */
static const yytype_int16 yypgoto[] =
{
   -1979, -1979,  1247,   -82,   -81,   100,   -92, -1979, -1979,   892,
     -63,  -251, -1979, -1196,   -90, -1979,  -381, -1979,  -484,  -932,
   -1480, -1979,  -954, -1315,  -892,  -720, -1979,   714,  -442, -1163,
     -34,  -514, -1979,  -430,  -336,  -424,   -77, -1979,   -72,  -487,
     816,  -636, -1979,  -611, -1979, -1979,  -878, -1979,    16, -1979,
     156, -1979,    12,  -729, -1979, -1979,  -446, -1979,   811,   503,
   -1979,  -502, -1979,  -673, -1979,   -76, -1979, -1979, -1979,   158,
     504,   815, -1979,   966, -1979,   973,     2,  -674, -1979, -1979,
   -1979, -1979, -1979,   616,   -57, -1979,  -595,     3, -1979,   974,
   -1979,   949, -1979, -1979, -1979,   735, -1979, -1979, -1979,   757,
   -1568, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979,  -183,
    1267,  1555, -1979,  -399,   -55, -1365,  -186,  -507, -1979,   832,
   -1979,   835, -1979, -1979, -1979, -1979, -1979, -1979,   917, -1979,
   -1979,   225, -1979, -1979, -1979,   728,   810, -1979, -1979,    -4,
   -1373, -1979, -1979,  -182, -1979, -1979,  -313, -1772, -1979,  -677,
   -1979,  -976, -1335, -1574,  1248,  -540,  -718,   293,   295, -1979,
   -1979,  -831, -1061,   -18, -1979,     4, -1085,  -161, -1979, -1629,
   -1978, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1979, -1052,
   -1979, -1979,   960,   308, -1979,    26, -1979,   901,    17, -1979,
    1743,   963, -1979, -1979, -1979,   -26,   368,   680, -1979, -1979,
   -1979,  -200, -1979, -1979, -1979, -1979, -1979,   929,  -577,   220,
     619, -1979, -1979, -1979,  -198, -1979, -1979, -1979, -1979,  -179,
    1180, -1979, -1979,  -467,   716, -1575,   339, -1979, -1979, -1979,
   -1979, -1979, -1979, -1979, -1979,   -70, -1979, -1979, -1979, -1979,
   -1979, -1979,  -471, -1979, -1979, -1979, -1979, -1979,   761, -1979,
   -1979, -1979,  -451,  -945,   989, -1979, -1979, -1979, -1979,  -472,
     752, -1979, -1979, -1979, -1979,  -821, -1979, -1979,  1789,  1240,
   -1979,  1251, -1979,  -792,  -219,   930,  1334, -1979, -1979, -1979,
   -1979, -1979, -1979,  1773,  1791, -1979, -1979, -1979,  1288, -1979,
   -1979, -1979,  1019,   192, -1979, -1979,   531,  -924, -1979, -1979,
   -1979,  -864, -1979, -1979,  -799,  -581, -1979,   627, -1979, -1979,
    -360,  -519,  -129, -1979, -1979
};

  /* YYDEFGOTO[NTERM-NUM].  */
static const yytype_int16 yydefgoto[] =
{
      -1,    72,    73,    74,    75,   151,   131,   858,   562,   597,
    1517,  1518,  2131,  1578,  1579,  1846,  1821,  1826,   866,  1030,
    1078,  1217,  1218,  1079,   783,  1041,  1042,  1043,  2113,  2114,
     680,   784,   985,   486,   535,   664,    76,    77,    78,   935,
     682,   683,   684,   673,  1236,  1247,  1593,  1602,  1504,  1603,
    1604,  1605,   552,   553,  1860,  2146,  2147,   685,   951,  1261,
     952,   515,   689,   690,  1608,   511,   512,  1252,  1253,   953,
     954,  2195,   603,    79,    80,    81,  1031,   805,   513,  1838,
    1570,  1198,   867,   868,  1181,  1182,   785,  1033,    84,    85,
     807,  1274,   786,   787,   788,  1377,   789,   790,   791,  1373,
    1354,  1383,   792,   793,   794,   795,   796,   797,  2056,  1294,
     605,  1295,   809,  1296,   798,   799,   800,   871,  2212,   960,
     961,   962,  1272,   872,  1184,   873,   874,  1185,  1155,  1551,
    1194,  1833,  1195,  1196,    86,   548,   532,  1488,  1489,  1490,
    1491,  1950,  1980,  1981,  2102,  2103,  2104,   802,  1982,  1113,
    1492,  1493,  1735,   558,   559,   566,  2241,  2278,  2279,  1811,
    2280,  2281,  1134,   544,  1983,  1114,  1115,  1962,  1963,  1964,
    1437,  2270,  2271,  1765,  1780,  2128,  2122,  1116,  1748,  1418,
      87,   146,   823,  1430,    88,  1035,   648,   649,   234,    90,
     162,  1141,    91,    92,    93,   833,  1727,  1124,  1125,  1126,
      94,   651,    95,    96,    97,    98,   615,   616,   617,   883,
     884,  1574,    99,   261,   626,   262,   634,   263,   264,   627,
     899,   100,  1117,  1438,  1451,  1953,  1118,   101,   102,   103,
     920,   104,   105,   106,   107,   108,   594,  2315,  1512,  2246,
    2247,  2290,  2291,  2285,  2313,  2332,  2335,  2346,   528,   109,
     110,   111,   814,  1067,  1068,  1069,   112,   113,   114,   818,
     819,   820,  1071,  1076,  1720,  1074,   115,   116,   188,   189,
     190,   855,  1813,   529,   117,   644,   645,   668,   118,   119,
     120,   121,   122,   204,   198,   123,   124,   125,   133,   539,
     540,   541,   542,  1313,  1314,  1315,  1316,  1300,  1289,  1301,
    1302,  1303,  1037,  1038,  1039,  1290,  1223,   913,   914,   915,
     829,   821,   545,   126,   841
};

  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     positive, shift that token.  If negative, reduce the rule whose
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
static const yytype_int16 yytable[] =
{
     487,   488,    82,    83,   492,   516,   546,   801,   942,   687,
     906,   502,  1133,   956,   806,  1219,   607,   145,  1283,   843,
    1581,  1131,   681,   521,   522,   827,    89,   260,   523,  1481,
     782,  1273,   501,   524,  1446,   527,  1817,  1452,  1453,  1454,
    1455,  1456,  1457,  1458,  1459,  1460,  1461,  1462,  1463,  1464,
    1465,   604,  1469,  1470,  1288,  1472,  1473,  1474,  1475,  1476,
     931,  1307,  1248,   631,  1310,  1737,  1044,   269,  1494,   940,
    1483,   652,   654,   506,  1277,   502,   912,  1159,   507,   630,
    1219,  1745,   919,   842,  1199,   924,  1139,  1291,  1752,  2117,
    1754,   518,   519,  1386,  1758,  1770,   534,   849,   834,  2123,
     565,   968,   943,   568,  1771,  1772,  1436,   525,   526,  1783,
    1785,  1786,  1214,  -910,   589,  1744,   848,   206,     7,  1502,
    -911,  1159, -1000,  2221,  1420,   896,   581,   585,   510,   944,
    2027,     7,  1057,  1072,   598,  1318,  1233,  1234,  1235,   619,
     231,   945,   152,  1084,   136,  2031,  -512,   851,   782,   268,
    1084,  -581,  1084,  2047,    42,    17,  1123,  1812,  1798,   905,
    1947,   688,   224,   237,  2051,   837,   946,  1782,    17,  1215,
     947,  1552,   624,    42,  1513,  1784,   646,    42,  1287,   137,
     157,   613,   625,  1292,    36,  1032,   830,  1746,   237,  1299,
      50,  1478,  2075,  1270,  1052,  1965,   974,    36,   688,  1317,
    2105,  1514,  1774,  1448,  1140,  1728,  1807,   138,   583,  1161,
     237,   948,   643,  1484,   647,  1571,    40,  2253,   614,   782,
     656,   949,    42,  1824,   844,   509,   139,  1159,  1801,    40,
    1839,   556,  1159,   140,   850,    42,   653,  1553,  1439,  1729,
    1153,  1086,  1087,   225,   490,  1264,    49,   838,   137,  1148,
     491,   132,   950,  2254,  2269,  1448,   227,   620,  1466,    49,
    2006,  2007,   141,  1139,  1024,  1762,  1763,    42,  1449,  1265,
    1026,  1027,  1028,   142,  1510,  1495,   138,   666,   667,   137,
    1554,   233,  1807,   839,   127,   891,  -450,   782,  -450,  1154,
     986,   510,   235,   782,   782,   782,  1129,   236,  1133,  1599,
    2124,   557,   632,  1245,  1000,  1764,  1808,   138,  1080,  1120,
    1600,   143,  2118,  1256,  1802,  1161,  1262,  1816,  1496,   650,
    1161,   958,   514,   584,  1089,  1090,  1091,  1747,  1157,  2328,
     200,   201,   202,   128,   604,  2105,  1122,  1441,  2125,  1092,
    2126,  1159,  1730,  1122,  1511,  1093,  1132,   520,  1450,  1936,
    1094,  1095,  1053,   154,   267,  2139,  2119,  1467,    42,   275,
    1096,  2074,   245,  1949,  1594,  1954,  1097,  2079,  1098,  1840,
    1099,   226,  1279,  2076,   203,  1731,    42,  1159,   633,  2089,
     510,  1140,  1808,   159,  2244,  1442,   496,   245,   155,  1160,
    1938,  2120,  1100,  1951,    50,  1790,  1101,  1102,  1775,  1776,
    1450,  1677,  1064,   497,  1514,  1515,  2276,  1572,   137,   245,
    1104,  1130,  1601,  2255,  1777,  1105,   498,  2245,  1157,  1573,
    -255,  1137,   499,  1679,  1065,   902,  1788,  1789,   510,  1161,
    1778,  1159,  1793,  1794,  1032,   156,   138,  -512,   502,   898,
     898,  1073,  -581,   643,   892,   502,  1107,   941,  1108,  1123,
     803,    42,   270,  1952,   502,  1662,  1664,  2277,  1725,   663,
    -254,   901,  1109,  1110,  1111,  1161,   671,  1620,   582,   586,
     845,   157,  1278,  2222,  1718,   132,   586,   813,   817,  1160,
    1073,   502,   621,   144,  1842,   840,   517,  1779,   941,   817,
    1555,  1516,  1159,   832,   813,    71,   502,  2167,  2121,  2168,
     817,   804,   824,   132,   565,   502,  1732,  1180,  2127,   832,
      82,    83,   813,   531,   817,   502,   502,   835,  2028,  1161,
    1663,   773,  1165,   775,   925,   536,   534,  1162,   925,   547,
     854,   921,   922,  2032,    89,   508,   534,   663,   846,  1597,
      71,  2048,   502,   854,  1824,  1407,  1408,   271,   870,  1178,
    1179,  1180,  2052,    71,   877,   879,   881,  1733,  1425,   885,
    1525,  1228,  1229,   860,   832,   502,   502,   272,   782,   782,
    -910,   832,  1960,   773,   674,   775,   895,  -911,  1480, -1000,
    1161,   773,   543,   775,  1163,  1058,   890,   534,   550,   944,
     129,   502,  2257,   889,   130,  1443,  1497,   894,  1564,   635,
     893,  1257,   911,   916,   613,   560,   637,   613,  1515,  2286,
    2287,  1355,  1356,  1357,  1487,   148,  1440,  1871,  1445,   933,
    1375,  1422,  1611,   502,   939,   636,  1258,  1903,  1165,   158,
     947,  1834,  1157,  1165,  1872,   561,  1468,  1171,  1172,   638,
    1530,   572,   149,   912,  1904,  1159,   903,  1498,   904,   573,
    1587,  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1176,  1177,
    1178,  1179,  1180,   579,   907,   487,  2017,  2322,  2323,  2324,
     580,   948,  1697,  1508,   159,   624,  1825,  1521,   127,   487,
     936,   937,  1558,  1279,   590,   625,   150,  1565,  1566,  1567,
     639,  1849,   160,  1160,  2133,   591,   161,  1209,  1559,  2018,
    1822,  1580,  1580,  1358,   938,   782,   875,  1231,  1232,  1221,
     782,   782,   782,  2184,  2288,  2289,   592,  1853,  1854,  1890,
    1211,  1212,   600,  1359,   887,   593,   888,  2019,   773,   927,
     775,   928,   640,  1161,  2190,  2191,   773,  1360,   775,  1164,
    1409,  1162,  1165,  1166,  1167,  1168,  1169,  1170,   574,  1523,
    2235,  1171,  1172,   601,   602,  1992,  1993,  1361,  2237,  1066,
    1410,   903,   595,   929,  1873,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,   596,   817,  1905,   618,   575,   576,  1165,  1066,
     622,   565,  1560,   988,   599,   989,   487,  1171,  1172,   941,
     502,  1240,   502,   577,   537,   538,  1851,   578,  1163,  1589,
     623,  1590,  1175,  1176,  1177,  1178,  1179,  1180,   628,  1061,
    1152,   663,   747,  1138,  1183,   641,  1561,   752,   753,  1620,
     642,  1621,  2098,  1562,  2236,  1333,  1583,  2238,  1627,  1164,
     650,   613,  1165,  1166,  1167,  1168,  1169,  1170,   629,  1874,
    1875,  1171,  1172,   502,  1620,  1620,  1651,  1694,   643,  1906,
    1907,  1568,  1569,   647,  2344,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,   879,   881,  1210,  2228,  2229,   549,   614,   551,
     502,   554,   555,  1823,   773,   657,   775,  1237,  1844,   502,
    1845,  2081,  1639,  1640,   502,  1249,   502,  2085,  2001,   943,
    1805,  1230,   658,  1165,   502,   659,   662,   502,  1814,  1481,
     670,   672,  1171,  1172,  1742,  1843,   674,   675,  1847,  2094,
     686,  1715,  1716,  1721,  2024,  1620,   944,  1911,  1176,  1177,
    1178,  1179,  1180,   911,  1487,  2004,   688,  2005,   945,  1279,
    1620,  1773,  2011,  2086,   911,  2087,  1239,   937,  1876,   533,
    1243,  1244,  1760,  1620,   911,  2137,   810,   811,  1908,  2194,
    1583,   812,  2151,   946,  1487,   822,  1830,   947,   825,  1877,
     938,  2196,   826,  2197,   564,  2206,   567,  2207,  1032,  1909,
     569,   570,   571,  2196,  1864,  2239,  1219,  1866,  1614,   828,
     831,   521,   522,  1413,  1414,   847,   523,  1848,  1620,   852,
    2249,   524,  1995,   527,  1577,  1583,  1406,  2251,   948,  1580,
    1940,  1941,  1080,  1943,  1944,  2196,   857,  2261,   949,  2196,
    1427,  2264,  2265,  2224,  1066,  1806,  2227,   813,   817,  2178,
    2231,   859,   817,  2182,  1427,   862,  2266,  1615,   191,   876,
    2196,  1387,  2268,  2196,  2196,  2301,  2305,  1393,  1394,   950,
    1827,  1934,  1935,  1164,  1703,   882,  1165,  1166,  1167,  1168,
    1169,  1170,   886,  1970,  1971,  1171,  1172,   908,   909,  2088,
    1412,   192,   925,  2263,  1972,   525,   526,  2267,   697,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,   926,   193,   194,   195,
     196,   502,   932,  1428,  1429,  1704,  2196,  2311,  2325,  1507,
     817,   502,   930,   963,   817,  1479,   943,  1444,  1200,  2300,
    1201,   870,  1501,  1529,   817,  1485,   964,   965,   966,   967,
     977,  1133,  1509,   969,   970,   980,  2225,  1133,  1471,  1970,
    1971,   197,   971,   944,  -771,   972,   973,   975,   976,   943,
    1972,  1557,  1990,  1991,   704,   945,   978,   979,   981,  -326,
    -324,   982,   997,   943,  1973,   983,  1974,   984,  1975,  2350,
    1519,  1520,  -328,   998,  1576,  -331,   944,   987,  -327,  1040,
     946,   990,   991,  -329,   947,   992,   993,   994,   945,   911,
     944,  1586,   613,   995,   996,  1001,  1002,   708,  1003,  -330,
    -284,  1004,   945,  1591,  1005,  2022,  1249,  1249,   711,   712,
    1976,  1598,  1006,   946,  1948,  1007,  2208,   947,  1008,  -325,
    1955,  -323,  -286,   502,  -287,   948,  2204,   946,  1487,  1009,
    1973,   947,  1974,  1051,  1975,   949,  1010,  1011,  -290,  1012,
    1013,  1014,  1487,  1977,  1487,  2310,  1015,  1016,  -285,  2021,
    1032,  -288,  1055,  -289,  2023,  1056,  1978,  1017,   948,  1018,
    1019,  1216,  1020,  1021,  1022,  1023,   950,  1025,   949,  1133,
     132,  1045,   948,  1133,  1580,  1046,  1976,  1979,  1219,  1047,
    1048,  1049,   949,  1050,  1660,   911,  1054,  1063,  1795,  1966,
    1967,  1070,  1075,  1081,  1968,  1969,  1800,  1077,  1121,   950,
    1387,  1128,  1132,  1487,  1143,  1073,  1144,  2093,  1145,  1977,
    1147,   134,   135,   950,   147,  1149,  1150,  1156,   153,  1186,
    1197,   163,  1978,   199,   205,  1202,   207,   208,   209,   210,
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     221,   222,   223,  1979,  1203,   228,   229,   230,  1580,  2012,
    1222,  1225,  1224,  1226,   265,   266,  1238,  1227,  1251,  1254,
    -776,   274,  1431,  1432,  1241,   489,  1133,  1242,  1255,   495,
    1260,  1263,   782,  1269,  1276,   503,   504,   505,  1376,  1297,
    1319,  1320,  1321,  1363,  1066,  1388,  1378,  1411,  1389,  1390,
    1395,  1391,  1187,  1417,  -776,  1396,  1404,  1723,  1724,  1416,
    1726,  1421,  1424,  -776,  1426,  1738,  1739,  1427,  1726,   565,
    1743,  1439,  1447,  1482,  1749,  1499,   502,  1500,  1503,  2172,
    2078,  2080,  1505,  2082,  2083,  1523,   817,  2084,  1531,   747,
    1524,  -776,  1769,   530,   752,   753,   565,  1750,  1563,  2098,
    1582,  1583,   502,  1153,  1157,  1584,  1588,  1592,  1595,  1364,
    1596,  2073,  1606,  1607,  1609,  1610,  1613,  1159,  1618,  1623,
     563,  1433,  1631,  1787,   502,  2092,  1632,   502,  1734,  1633,
    1634,  1635,  2097,  1637,  1740,  1642,  1188,  1189,   773,  1643,
     775,   776,  1365,  1644,  1648,  1803,  1654,  1655,  2099,  2100,
    1675,  1656,  1190,   164,   165,  2115,  1657,  -776,  1678,  1366,
    1711,  1367,  1682,  1683,  1368,  1160,   587,  1685,  1686,  1434,
    1191,  1688,   588,   166,  1713,  1695,  1698,  1192,  1699,  1709,
    1712,   167,  1428,  1429,  1714,  1734,  1369,  1719,   168,  1722,
    -776,  1432,  1751,  2142,  1753,  1768,  1755,  1756,  1818,  1819,
    2140,  2275,  1370,  1757,   169,  1161,  1759,  1761,  1766,  1797,
    2156,   170,  1767,  1162,  1852,  1781,  1792,  1249,   171,  2177,
    1249,  1249,  1799,  2299,  1796,  1815,  2302,  2303,  2304,  1820,
    2306,  1159,   869,   782,  1831,   502,  -717,  -718,   502,  1836,
    1837,   655,  1832,  1841,  1850,  1859,  1865,  1868,   172,  1881,
    1371,  1372,  1487,  -255,  1887,  1929,  1888,  1895,  1896,  1897,
    1939,  1942,   897,  2326,  1898,  1937,  1957,  2327,   911,  1959,
    1163,  1958,  1987,  1988,  1961,  1989,   173,  1157,  2115,  1994,
    1997,  1072,  1842,  1913,  2010,   174,  1998,  2340,   175,  1999,
    1159,  1855,  1856,  1857,  2199,  2000,  2002,  2020,  2055,  2025,
    2026,  2072,  2029,   176,  2030,  2033,  2037,  2045,  2046,   177,
     178,  2049,  -216,  2050,  2053,   955,  -218,   957,  1933,  2096,
     959,  -776,  2106,  2107,  2108,  2109,  2111,  2129,  2112,  2130,
    2138,  2141,  2143,  2144,  2150,  2161,  1932,  2152,  1160,  2153,
    2159,  2160,  2115,  2162,  2173,  2115,  1080,  1080,  2176,  2115,
    2187,  2179,  2180,  2181,  2183,  2189,  2192,  2198,  2200,   565,
    2211,  2226,  2115,  2217,  2218,   565,  2233,  2230,  2243,  2232,
    2242,  1433,  -776,  2262,  2248,  2256,  2272,  2283,  1161,  1435,
    2273,  2274,  2284,  2282,  2297,  2293,  1162,  2294,  2295,  2307,
    2309,  2312,  2115,  2308,  2314,  2316,  2115,  2317,  2318,   179,
    2319,  2329,  2330,   180,  2321,  2331,  2334,  2333,   181,  1034,
    1036,  2336,  2337,   817,   817,  2338,  2339,  1734,   817,   817,
    2341,  2342,  2343,  2345,   502,  2347,  2348,  2134,  2115,  2349,
    1146,  1996,  2013,  2203,  2240,   676,  1399,  1250,  1956,  1858,
    2250,  1259,  1612,  1163,  1861,  1986,  2003,  1616,  1183,  1580,
    1266,  2015,  1526,  1059,   182,  1374,  2009,   183,   660,   661,
    1060,  1062,   665,  1403,   808,   184,  2101,   185,  1193,   606,
    1835,  1268,  1157,  1985,  2193,  2016,  1271,  1809,  2110,  1810,
    1984,   836,  2095,   493,  1135,  1159,  1486,   186,  1804,  1220,
     502,  1741,  1151,   187,  1142,  1204,  1519,  1520,   900,  2320,
    1080,  1791,  1575,  1127,  1415,  1423,   856,  1387,  1477,  -812,
     232,  1580,   669,  1213,   494,  1164,  1207,  1208,  1165,  1166,
    1167,  1168,  1169,  1170,   273,  1119,  1894,  1171,  1172,   861,
    1661,  1585,     0,  1160,     0,     0,     0,     0,     0,  1084,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  2158,
       0,     0,     0,     0,     0,   565,   565,     0,   565,   565,
       0,     0,   565,  1161,     0,     0,     0,     0,     0,     0,
       0,  1162,     0,     0,     0,     0,     0,  1267,     0,     0,
       0,     0,     0,  1275,  2116,     0,   817,     0,  1280,  1281,
    1282,     0,  1284,     0,  1285,  1286,  1036,     0,     0,     0,
       0,  1036,  1293,     0,     0,     0,  1298,  1036,     0,  1304,
    1305,  1306,   502,  1308,  1309,     0,  1312,  1036,  1086,  1087,
       0,     0,  1322,  1324,  1326,  1328,  1329,  1332,  1163,     0,
       0,     0,     0,  2132,  1362,  2148,     0,     0,     0,     0,
       0,  1382,  1384,     0,     0,     0,  -811,     0,  1034,     0,
       0,     0,     0,     0,  1157,     0,     0,     0,     0,  1398,
       0,     0,     0,     0,  1400,  1401,  1402,  1159,     0,  1405,
    2135,  2136,     0,  2201,     0,     0,  1084,     0,  1164,  2063,
       0,  1165,  1166,  1167,  1168,  1169,  1170,  2171,     0,     0,
    1171,  1172,     0,     0,   565,     0,     0,     0,     0,  1157,
       0,  1089,  1090,  1091,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,  1159,     0,     0,  1160,  1092,     0,     0,     0,
    2064,     0,  1093,     0,     0,     0,     0,  1094,  1095,     0,
       0,     0,     0,     0,     0,     0,     0,  1096,     0,     0,
       0,     0,     0,  1097,     0,  1098,     0,  1099,     0,     0,
       0,     0,     0,     0,     0,  1161,  2171,  1157,     0,     0,
    1160,     0,     0,  1162,     0,  1086,  1087,     0,     0,  1100,
    1159,  1522,     0,  1101,  1102,   869,  1527,     0,     0,     0,
    1532,  1533,  1534,     0,  1535,     0,     0,  1104,     0,     0,
    1536,  1537,  1105,  1538,  1539,  1541,  1543,  1544,  1545,  1546,
    1161,  1689,     0,  1550,     0,  2202,     0,     0,  1162,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1160,     0,
    1163,  2148,     0,  1107,     0,  1108,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1109,
    1110,  1111,     0,     0,     0,     0,     0,     0,  1089,  1090,
    1091,     0,     0,     0,     0,     0,     0,     0,  1161,     0,
       0,     0,     0,  1092,     0,  1163,  1162,     0,     0,  1093,
       0,     0,     0,  1164,  1094,  1095,  1165,  1166,  1167,  1168,
    1169,  1170,   955,     0,  1096,  1171,  1172,     0,     0,  1619,
    1097,     0,  1098,     0,  1099,     0,     0,     0,     0,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,     0,     0,     0,
       0,  1665,     0,  1666,     0,  1638,  1100,     0,  1157,     0,
    1101,  1102,     0,  1163,     0,     0,     0,     0,     0,     0,
    1652,  1159,     0,     0,  1104,     0,     0,     0,  1659,  1105,
       0,     0,  1667,     0,  1669,     0,  1671,     0,     0,  1674,
       0,     0,     0,     0,     0,  1480,  -812,     0,     0,  2068,
       0,     0,     0,     0,     0,  1157,     0,     0,     0,     0,
    1107,     0,  1108,     0,     0,  1680,  1681,     0,  1159,  1160,
       0,     0,     0,     0,     0,     0,  1109,  1110,  1111,     0,
       0,     0,     0,     0,  1687,     0,     0,     0,     0,     0,
       0,     0,  1692,     0,     0,     0,     0,  1696,     0,     0,
       0,     0,     0,     0,  1700,     0,  1702,     0,  1157,  1161,
       0,     0,     0,     0,     0,     0,  1160,  1162,     0,     0,
       0,  1159,     0,     0,     0,     0,     0,  1717,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1164,  1161,     0,  1165,  1166,
    1167,  1168,  1169,  1170,  1162,     0,     0,  1171,  1172,  1160,
       0,     0,     0,     0,  1163,     0,     0,     0,     0,     0,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1159,     0,
       0,     0,     0,  -811,     0,     0,     0,  1924,     0,     0,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1161,
       0,     0,  1171,  1172,     0,     0,     0,  1162,     0,     0,
       0,  1163,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,  1157,  1160,     0,     0,     0,
       0,     0,  2216,     0,     0,     0,     0,     0,  1159,  1828,
       0,  1829,     0,     0,     0,     0,     0,     0,  1164,     0,
       0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,
    1171,  1172,     0,     0,  1163,     0,  1161,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,  1157,  1160,     0,  1690,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1159,     0,
       0,     0,     0,     0,     0,   955,  1862,     0,  1863,     0,
       0,     0,     0,  1867,     0,     0,  1869,     0,     0,  1870,
       0,     0,     0,  1878,  1879,  1880,  1161,  1882,  1883,  1884,
       0,     0,  1885,     0,  1162,     0,     0,     0,     0,     0,
    1889,     0,     0,     0,     0,     0,  1160,  1891,     0,     0,
       0,     0,  1893,  1312,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1899,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1912,     0,     0,
       0,     0,     0,  1916,  1917,  1918,  1161,     0,  1920,     0,
    1921,  1163,     0,     0,  1162,     0,     0,     0,     0,     0,
       0,     0,  1926,     0,  1928,     0,  1930,  1931,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,  1157,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1159,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,     0,     0,     0,     0,  2069,
       0,  1163,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1160,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,     0,  2070,     0,  2071,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
    1161,  1171,  1172,     0,     0,     0,     0,     0,  1162,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,  2014,     0,     0,     0,  1392,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,  1163,     0,     0,  1171,  1172,
       0,  2043,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  2062,     0,     0,     0,     0,  2065,     0,  2067,     0,
       0,     0,     0,     0,     0,     0,  1164,     0,  2077,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,  2090,  2091,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,     0,     0,     0,  1636,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  2149,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,  2154,  2155,     0,  1645,     0,  2157,     0,
       0,     0,  1330,     0,     0,     0,     0,     0,     0,     0,
     863,     0,     0,   691,     0,     0,   692,  2163,  2164,     0,
       0,   693,  2166,     0,     0,   694,     0,  2169,   695,  2170,
       0,     0,     0,   601,   602,  2174,     0,     0,     0,     0,
       0,     0,   696,     0,   697,     0,     0,     0,     0,     0,
     276,     0,     0,     0,     0,  2188,     0,   698,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   699,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1164,   700,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,   701,  1171,  1172,     0,     0,   702,     0,   703,     0,
     704,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,   705,   277,
    1646,     0,   706,     0,     0,   707,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   708,     0,   709,     0,     0,     0,     0,
       0,     0,   710,     0,   711,   712,     0,     0,     0,  2252,
       0,     0,     0,     0,     0,   713,   714,     0,     0,     0,
       0,  2258,  2260,     0,     0,     0,     0,     0,     0,     0,
       0,   715,     0,   278,   279,     0,   280,   281,   282,   716,
     284,   285,   286,   717,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     718,   315,   719,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   720,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   721,
     344,   345,   346,   722,   348,   349,   350,   351,   352,   353,
     354,   723,   356,   357,   358,   359,   360,   361,   362,   363,
     724,   365,   725,   367,   368,   726,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   727,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     728,   404,   405,   729,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,     0,   427,   428,   429,   430,   431,
     432,   433,   730,   731,   732,   733,   734,   735,   436,   437,
     438,   439,   440,   441,   736,   443,   444,   445,   446,     0,
     447,   737,   738,     0,     0,     0,     0,   739,   740,   741,
     742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
     752,   753,   754,   755,   756,   757,   758,   759,   760,   469,
     470,   471,   472,   761,   762,   763,   764,   765,   766,   767,
     768,   769,   482,   483,   484,   770,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   771,     0,     0,
       0,     0,     0,   772,   773,   774,   775,   776,     0,  1323,
       0,     0,     0,     0,   777,   778,  1331,   863,     0,   779,
     691,     0,   780,   692,     0,     0,     0,   781,   693,     0,
       0,     0,   694,     0,     0,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,  1334,  1335,  1336,  1337,  1338,  1339,
    1340,     0,  1341,  1342,   771,  1343,     0,  1344,     0,  1325,
     772,   773,   774,   775,   776,     0,     0,   863,     0,     0,
     691,   777,   778,   692,     0,     0,   779,     0,   693,   780,
       0,     0,   694,     0,   781,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1345,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
    1346,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1347,   700,  1348,
       0,     0,  1349,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,  1350,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
    1351,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,  1352,  1353,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,     0,     0,     0,  1327,
     772,   773,   774,   775,   776,     0,     0,   863,     0,     0,
     691,   777,   778,   692,     0,     0,   779,     0,   693,   780,
       0,     0,   694,     0,   781,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,     0,     0,     0,  1547,
     772,   773,   774,   775,   776,     0,     0,   863,     0,     0,
     691,   777,   778,   692,     0,     0,   779,     0,   693,   780,
       0,     0,   694,     0,   781,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,  1548,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
    1549,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,  1157,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,  1159,     0,     0,     0,
     772,   773,   774,   775,   776,     0,     0,     0,     0,     0,
       0,   777,   778,     0,     0,     0,   779,     0,     0,   780,
       0,  1157,     0,     0,   781,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1159,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1160,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1157,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1159,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1160,     0,  1161,     0,     0,     0,     0,     0,
       0,     0,  1162,     0,     0,     0,     0,  1157,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1159,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1160,     0,  1161,     0,     0,     0,     0,     0,     0,     0,
    1162,     0,     0,     0,     0,  1157,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1159,  1163,
       0,     0,     0,     0,     0,     0,     0,     0,  1160,     0,
    1161,     0,     0,     0,     0,     0,     0,     0,  1162,     0,
       0,     0,     0,  1157,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1159,  1163,     0,     0,
       0,     0,     0,     0,     0,     0,  1160,     0,  1161,     0,
       0,     0,     0,     0,     0,     0,  1162,     0,     0,     0,
       0,  1157,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1159,  1163,     0,     0,     0,     0,
       0,     0,     0,     0,  1160,     0,  1161,     0,     0,     0,
       0,     0,     0,     0,  1162,     0,     0,     0,     0,  1157,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1159,  1163,     0,     0,     0,     0,     0,     0,
       0,     0,  1160,     0,  1161,     0,     0,     0,     0,     0,
       0,     0,  1162,     0,     0,     0,     0,  1157,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1159,  1163,     0,     0,     0,     0,     0,     0,     0,     0,
    1160,     0,  1161,     0,     0,     0,     0,     0,     0,     0,
    1162,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1163,
       0,     0,     0,     0,     0,     0,     0,     0,  1160,     0,
    1161,     0,     0,     0,     0,     0,  1157,     0,  1162,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1159,
       0,     0,     0,     0,     0,     0,     0,  1163,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1161,     0,
       0,     0,     0,     0,  1164,     0,  1162,  1165,  1166,  1167,
    1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,  1163,     0,  1160,     0,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,     0,
       0,     0,  1164,     0,  1647,  1165,  1166,  1167,  1168,  1169,
    1170,     0,     0,     0,  1171,  1172,     0,     0,     0,     0,
       0,     0,     0,  1163,     0,     0,     0,  1161,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,  1162,     0,     0,     0,     0,
    1164,     0,  1649,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,     0,  1171,  1172,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,  1164,     0,
    1650,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,
    1171,  1172,  1163,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,     0,  1164,     0,  1668,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1157,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,  1159,  1164,     0,  1670,  1165,  1166,  1167,
    1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,     0,
       0,     0,  1164,     0,  1672,  1165,  1166,  1167,  1168,  1169,
    1170,  1160,     0,     0,  1171,  1172,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1157,     0,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,     0,     0,     0,     0,  1159,
    1164,     0,  1676,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,  1161,  1171,  1172,     0,     0,     0,     0,     0,  1162,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,  1164,  1157,
    1693,  1165,  1166,  1167,  1168,  1169,  1170,  1160,     0,     0,
    1171,  1172,  1159,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,     0,  1163,     0,  1710,     0,
    1157,     0,     0,     0,     0,     0,     0,  1161,     0,     0,
       0,     0,     0,  1159,     0,  1162,     0,     0,     0,     0,
    1160,     0,     0,     0,     0,     0,     0,  1164,     0,     0,
    1165,  1166,  1167,  1168,  1169,  1170,     0,     0,  1157,  1171,
    1172,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1159,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
    1161,  1160,     0,     0,     0,     0,     0,  1886,  1162,     0,
       0,     0,  1163,     0,     0,     0,  1157,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1159,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1160,
       0,  1161,     0,     0,     0,     0,     0,     0,     0,  1162,
       0,     0,     0,     0,  1157,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1163,     0,  1159,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1160,     0,  1161,
       0,     0,     0,     0,     0,     0,     0,  1162,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1157,  1163,     0,     0,     0,
       0,     0,     0,     0,     0,  1160,     0,  1161,  1159,     0,
       0,     0,     0,     0,     0,  1162,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1157,  1163,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1161,  1159,     0,     0,     0,
       0,     0,     0,  1162,     0,     0,  1160,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1164,  1163,     0,  1165,  1166,  1167,  1168,  1169,  1170,
       0,     0,     0,  1171,  1172,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1160,     0,  1161,  1174,  1175,  1176,
    1177,  1178,  1179,  1180,  1162,     0,     0,     0,  1157,     0,
    1163,  1900,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1159,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1161,     0,     0,     0,     0,     0,
       0,     0,  1162,     0,     0,     0,     0,  1164,     0,  1157,
    1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,
    1172,  1163,  1159,     0,     0,     0,     0,     0,     0,  1160,
       0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
       0,     0,     0,     0,     0,     0,     0,  1901,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1163,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1161,
    1160,     0,  1171,  1172,     0,     0,     0,  1162,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,     0,     0,
    1902,  1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,
    1161,     0,     0,  1171,  1172,     0,     0,     0,  1162,     0,
       0,     0,     0,     0,     0,  1157,     0,  1174,  1175,  1176,
    1177,  1178,  1179,  1180,  1163,     0,     0,     0,  1159,  1164,
       0,  1910,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,  1157,  1163,     0,  1164,     0,  1914,
    1165,  1166,  1167,  1168,  1169,  1170,  1160,  1159,     0,  1171,
    1172,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
       0,     0,     0,     0,     0,  1164,     0,  1915,  1165,  1166,
    1167,  1168,  1169,  1170,     0,     0,  1161,  1171,  1172,     0,
       0,     0,     0,     0,  1162,  1160,     0,     0,  1157,     0,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,
       0,  1159,     0,     0,     0,  1919,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,  1161,     0,     0,  1171,  1172,
       0,     0,     0,  1162,     0,     0,     0,  1157,     0,     0,
       0,  1163,  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1160,
    1159,     0,     0,     0,  1164,     0,  1923,  1165,  1166,  1167,
    1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1157,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,  1161,
    1163,  1159,     0,     0,  2036,     0,     0,  1162,  1160,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1164,
    1157,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1161,  1160,
       0,  1171,  1172,  1159,     0,     0,  1162,     0,     0,     0,
       0,     0,     0,     0,  1163,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,     0,     0,     0,  1157,  2038,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1161,
       0,  1159,  1171,  1172,     0,     0,     0,  1162,     0,     0,
       0,  1160,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,  1163,     0,     0,     0,     0,     0,     0,
    2040,     0,     0,     0,     0,     0,     0,     0,     0,  1157,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1160,
       0,  1161,  1159,     0,     0,     0,     0,     0,     0,  1162,
       0,     0,     0,     0,  1163,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1157,  1161,
       0,     0,     0,     0,     0,     0,     0,  1162,     0,     0,
    1160,  1159,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,     0,  1163,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
    1161,     0,     0,     0,     0,     0,  2041,     0,  1162,  1160,
       0,     0,  1157,     0,  1163,  1164,     0,     0,  1165,  1166,
    1167,  1168,  1169,  1170,     0,  1159,     0,  1171,  1172,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,  1161,
       0,     0,     0,     0,     0,  2042,     0,  1162,     0,     0,
       0,     0,     0,     0,     0,  1163,     0,     0,     0,     0,
       0,     0,     0,  1160,     0,     0,     0,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1157,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,  1161,  1163,  1159,     0,     0,     0,  2044,
       0,  1162,     0,     0,     0,     0,     0,     0,  1164,     0,
       0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,
    1171,  1172,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,  1160,     0,     0,     0,     0,  2054,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1163,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1157,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,  1161,     0,     0,     0,  1159,     0,  2057,
       0,  1162,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,
       0,     0,     0,  1171,  1172,     0,     0,     0,     0,     0,
       0,     0,     0,  1157,     0,     0,     0,  1174,  1175,  1176,
    1177,  1178,  1179,  1180,     0,  1160,  1159,     0,     0,  1164,
       0,  2060,  1165,  1166,  1167,  1168,  1169,  1170,  1163,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,  1157,     0,     0,  1161,     0,     0,     0,  2061,
       0,     0,     0,  1162,  1160,  1159,     0,     0,     0,     0,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,     0,  1171,  1172,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1157,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,  1161,     0,  1159,     0,     0,     0,
    2066,     0,  1162,  1160,     0,     0,     0,     0,     0,  1164,
    1163,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1157,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,  1161,  1160,  1159,     0,     0,     0,  2165,
       0,  1162,     0,     0,     0,     0,     0,     0,     0,  1163,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1164,     0,     0,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,  1161,  1171,  1172,     0,     0,     0,
       0,     0,  1162,  1160,     0,     0,     0,     0,  1157,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,     0,  1163,     0,
       0,  1159,     0,  2175,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1161,     0,     0,     0,     0,     0,  1157,
       0,  1162,     0,     0,     0,     0,     0,     0,     0,  1163,
       0,     0,  1159,     0,     0,     0,     0,     0,     0,  1160,
       0,     0,     0,  1164,     0,     0,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1157,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,     0,  1163,  1161,
    1160,  1159,     0,  2185,     0,     0,     0,  1162,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1157,     0,     0,
    1161,     0,     0,     0,     0,     0,     0,     0,  1162,  1160,
    1159,     0,     0,     0,     0,  1164,     0,     0,  1165,  1166,
    1167,  1168,  1169,  1170,  1163,     0,     0,  1171,  1172,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,  1161,
       0,     0,     0,     0,     0,  2186,     0,  1162,  1160,     0,
       0,     0,     0,     0,  1164,  1163,     0,  1165,  1166,  1167,
    1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,     0,  1157,     0,     0,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,  1161,  1159,
       0,     0,     0,     0,  2209,     0,  1162,     0,     0,     0,
       0,     0,     0,  1164,  1163,     0,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1157,     0,     0,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,  1160,     0,  1159,
       0,     0,     0,  2213,  1164,     0,     0,  1165,  1166,  1167,
    1168,  1169,  1170,  1163,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,  1161,     0,     0,
       0,     0,     0,     0,  2214,  1162,     0,  1160,     0,     0,
       0,     0,     0,  1164,     0,     0,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,  1161,     0,     0,
       0,     0,     0,  2215,     0,  1162,     0,     0,     0,     0,
       0,  1157,  1163,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1159,     0,     0,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,  1163,     0,     0,     0,     0,     0,     0,  2219,
    1164,     0,  1160,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,     0,  1171,  1172,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,     0,     0,
    2220,     0,  1161,     0,     0,     0,     0,     0,     0,  1164,
    1162,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,     0,     0,     0,     0,  2234,
       0,     0,     0,     0,     0,     0,     0,     0,  1164,     0,
       0,  1165,  1166,  1167,  1168,  1169,  1170,  1163,     0,     0,
    1171,  1172,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,     0,     0,     0,  2292,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1164,     0,     0,
    1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,
    1172,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
       0,     0,     0,     0,     0,     0,     0,  2296,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1164,     0,     0,
    1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,
    1172,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
     863,     0,     0,   691,     0,     0,   692,  2298,     0,     0,
       0,   693,     0,     0,     0,   694,     0,     0,   695,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   696,     0,   697,     0,     0,     0,     0,     0,
     276,     0,     0,     0,     0,     0,     0,   698,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   699,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   700,  1164,     0,     0,  1165,  1166,  1167,  1168,  1169,
    1170,   701,     0,     0,  1171,  1172,   702,     0,   703,     0,
     704,     0,     0,     0,     0,     0,     0,     0,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,     0,     0,     0,   705,   277,
    1622,     0,   706,     0,     0,   707,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   708,     0,   709,     0,     0,     0,     0,
       0,     0,   710,     0,   711,   712,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   713,   714,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   715,     0,   278,   279,     0,   280,   281,   282,   716,
     284,   285,   286,   717,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     718,   315,   719,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   720,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   721,
     344,   345,   346,   722,   348,   349,   350,   351,   352,   353,
     354,   723,   356,   357,   358,   359,   360,   361,   362,   363,
     724,   365,   725,   367,   368,   726,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   727,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     728,   404,   405,   729,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,     0,   427,   428,   429,   430,   431,
     432,   433,   730,   731,   732,   733,   734,   735,   436,   437,
     438,   439,   440,   441,   736,   443,   444,   445,   446,     0,
     447,   737,   738,     0,     0,     0,     0,   739,   740,   741,
     742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
     752,   753,   754,   755,   756,   757,   758,   759,   760,   469,
     470,   471,   472,   761,   762,   763,   764,   765,   766,   767,
     768,   769,   482,   483,   484,   770,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   771,     0,     0,
       0,     0,     0,   772,   773,   774,   775,   776,     0,     0,
       0,     0,     0,     0,   777,   778,   864,   863,     0,   779,
     691,     0,   780,   692,     0,     0,     0,   781,   693,   865,
       0,     0,   694,     0,     0,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,     0,     0,     0,     0,
     772,   773,   774,   775,   776,     0,     0,   863,     0,     0,
     691,   777,   778,   692,     0,     0,   779,     0,   693,   780,
       0,     0,   694,     0,   781,   695,  1311,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,     0,     0,     0,     0,
     772,   773,   774,   775,  1658,  1157,     0,     0,     1,     0,
       0,   777,   778,     0,     2,     3,   779,     0,  1159,   780,
       0,     4,     0,     0,   781,     0,  1311,     5,     0,     0,
       0,     0,     6,     0,     0,     7,     8,     9,     0,     0,
       0,    10,    11,     0,     0,     0,     0,  1157,    12,  1707,
      13,     0,     0,     0,     0,     0,     0,     0,    14,     0,
    1159,     0,     0,     0,     0,     0,  1160,     0,    15,    16,
       0,     0,    17,    18,    19,    20,    21,     0,    22,    23,
      24,    25,    26,    27,  1157,    28,    29,    30,    31,    32,
      33,    34,     0,     0,     0,    35,     0,  1159,     0,     0,
       0,    36,     0,     0,     0,     0,  1161,     0,  1160,    37,
       0,     0,     0,     0,  1162,     0,    38,     0,     0,     0,
       0,  1157,     0,     0,     0,     0,     0,     0,     0,    39,
       0,     0,     0,    40,  1159,     0,    41,     0,     0,    42,
      43,    44,    45,    46,     0,  1160,     0,     0,  1161,     0,
       0,     0,     0,     0,    47,     0,  1162,  1157,     0,     0,
      48,     0,     0,    49,     0,     0,     0,     0,     0,     0,
    1159,  1163,     0,     0,     0,    50,     0,     0,     0,     0,
       0,     0,  1160,     0,     0,  1161,     0,     0,     0,     0,
       0,     0,     0,  1162,     0,     0,     0,     0,  1157,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      51,  1159,     0,  1163,     0,    52,     0,     0,  1160,     0,
       0,     0,  1161,     0,     0,     0,     0,     0,     0,     0,
    1162,     0,     0,     0,  1157,     0,     0,     0,    53,    54,
       0,     0,     0,     0,     0,     0,     0,  1159,     0,     0,
    1163,     0,    55,     0,     0,     0,     0,    56,  1161,  1160,
       0,     0,     0,     0,     0,     0,  1162,     0,     0,     0,
       0,     0,     0,  1157,     0,     0,    57,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1159,  1163,     0,     0,
       0,     0,     0,     0,     0,  1160,     0,     0,    58,  1161,
       0,     0,     0,     0,     0,     0,    59,  1162,     0,  1157,
       0,     0,     0,     0,     0,     0,     0,    60,     0,     0,
       0,     0,  1159,  1163,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1160,  1161,     0,     0,     0,     0,
       0,     0,     0,  1162,     0,     0,     0,     0,     0,     0,
    1157,     0,     0,     0,     0,     0,     0,     0,    61,    62,
      63,    64,    65,  1159,  1163,     0,    66,     0,     0,     0,
    1160,     0,     0,     0,  1161,     0,     0,     0,    67,    68,
      69,     0,  1162,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1163,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1161,  1160,     0,     0,     0,     0,  1164,     0,  1162,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,    70,  1163,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,  1161,     0,     0,  1708,     0,     0,    71,  1164,  1162,
       0,  1165,  1166,  1167,  1168,  1169,  1170,     0,  1157,     0,
    1171,  1172,     0,     0,     0,  1163,     0,     0,     0,     0,
       0,  1159,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,  1164,  1624,     0,  1165,  1166,
    1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,
       0,     0,     0,     0,     0,     0,  1163,     0,     0,     0,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,  1160,
       0,     0,  1164,  1625,     0,  1165,  1166,  1167,  1168,  1169,
    1170,     0,     0,     0,  1171,  1172,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,     0,     0,     0,  1164,  1161,
    1626,  1165,  1166,  1167,  1168,  1169,  1170,  1162,     0,     0,
    1171,  1172,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,
    1180,     0,     0,     0,     0,     0,  1628,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
    1157,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1159,  1163,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,  1164,     0,  1629,  1165,  1166,
    1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1157,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,
       0,  1160,  1159,  1630,  1164,     0,     0,  1165,  1166,  1167,
    1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,     0,
    1164,  1161,  1641,  1165,  1166,  1167,  1168,  1169,  1170,  1162,
    1160,     0,  1171,  1172,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,  1705,  1157,
       0,  1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,
    1161,     0,  1159,  1171,  1172,     0,     0,     0,  1162,     0,
       0,     0,     0,     0,     0,     0,  1163,  1174,  1175,  1176,
    1177,  1178,  1179,  1180,     0,  1157,     0,     0,     0,  1706,
       0,     0,     0,     0,     0,     0,     0,     0,  1159,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1160,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1157,     0,     0,  1163,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1159,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1160,     0,     0,     0,
    1161,     0,     0,     0,     0,     0,     0,     0,  1162,     0,
       0,     0,     0,     0,     0,  1157,     0,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,  1159,     0,
       0,  1171,  1172,  1160,     0,     0,  1161,     0,     0,     0,
       0,     0,     0,     0,  1162,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,     0,     0,  2034,     0,     0,
       0,     0,     0,     0,     0,  1163,     0,     0,     0,     0,
       0,  1157,     0,  1161,     0,     0,  1160,     0,     0,     0,
       0,  1162,     0,     0,  1159,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1163,     0,     0,  1157,     0,  1264,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1161,  1159,     0,     0,
       0,     0,     0,     0,  1162,     0,     0,     0,     0,     0,
    1265,     0,  1160,     0,     0,     0,     0,     0,  1163,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1160,     0,     0,     0,     0,
       0,  1164,  1161,     0,  1165,  1166,  1167,  1168,  1169,  1170,
    1162,  1163,     0,  1171,  1172,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1174,  1175,  1176,
    1177,  1178,  1179,  1180,     0,  1161,     0,     0,     0,  2035,
       0,     0,     0,  1162,     0,     0,     0,     0,     0,     0,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,     0,  1171,  1172,     0,     0,     0,  1163,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,     0,     0,  2039,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1163,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1164,     0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,
       0,     0,  1171,  1172,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,
    1178,  1179,  1180,     0,     0,     0,  1164,     0,  2058,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,  1164,  2059,     0,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,     0,  1171,  1172,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,     0,     0,     0,     0,
       0,  2210,     0,     0,     0,     0,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,   863,
       0,     0,   691,     0,  2223,   692,     0,     0,     0,     0,
     693,     0,     0,     0,   694,     0,     0,   695,     0,     0,
       0,     0,  1164,  1653,     0,  1165,  1166,  1167,  1168,  1169,
    1170,   696,     0,   697,  1171,  1172,     0,     0,     0,   276,
       0,     0,     0,     0,     0,     0,   698,     0,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,  1164,   699,     0,  1165,  1166,
    1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     700,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,
     701,     0,     0,     0,     0,   702,     0,   703,     0,   704,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   705,   277,     0,
       0,   706,     0,     0,   707,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   708,     0,   709,     0,     0,     0,     0,     0,
       0,   710,     0,   711,   712,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   713,   714,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     715,     0,   278,   279,     0,   280,   281,   282,   716,   284,
     285,   286,   717,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   718,
     315,   719,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   720,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   721,   344,
     345,   346,   722,   348,   349,   350,   351,   352,   353,   354,
     723,   356,   357,   358,   359,   360,   361,   362,   363,   724,
     365,   725,   367,   368,   726,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   727,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   728,
     404,   405,   729,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,     0,   427,   428,   429,   430,   431,   432,
     433,   730,   731,   732,   733,   734,   735,   436,   437,   438,
     439,   440,   441,   736,   443,   444,   445,   446,     0,   447,
     737,   738,     0,     0,     0,     0,   739,   740,   741,   742,
     743,   744,   745,   746,   747,   748,   749,   750,   751,   752,
     753,   754,   755,   756,   757,   758,   759,   760,   469,   470,
     471,   472,   761,   762,   763,   764,   765,   766,   767,   768,
     769,   482,   483,   484,   770,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   771,     0,     0,     0,
       0,     0,   772,   773,   774,   775,   776,     0,     0,     0,
       0,     0,     0,   777,   778,     0,     0,   863,   779,     0,
     691,   780,     0,   692,     0,     0,   781,  1701,   693,     0,
       0,     0,   694,     0,     0,   695,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   696,
       0,   697,     0,     0,     0,     0,     0,   276,     0,     0,
       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   700,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   701,     0,
       0,     0,     0,   702,     0,   703,     0,   704,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   705,   277,     0,     0,   706,
       0,     0,   707,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     708,     0,   709,     0,     0,     0,     0,     0,     0,   710,
       0,   711,   712,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   713,   714,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   715,     0,
     278,   279,     0,   280,   281,   282,   716,   284,   285,   286,
     717,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   718,   315,   719,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   720,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   721,   344,   345,   346,
     722,   348,   349,   350,   351,   352,   353,   354,   723,   356,
     357,   358,   359,   360,   361,   362,   363,   724,   365,   725,
     367,   368,   726,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   727,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   728,   404,   405,
     729,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,     0,   427,   428,   429,   430,   431,   432,   433,   730,
     731,   732,   733,   734,   735,   436,   437,   438,   439,   440,
     441,   736,   443,   444,   445,   446,     0,   447,   737,   738,
       0,     0,     0,     0,   739,   740,   741,   742,   743,   744,
     745,   746,   747,   748,   749,   750,   751,   752,   753,   754,
     755,   756,   757,   758,   759,   760,   469,   470,   471,   472,
     761,   762,   763,   764,   765,   766,   767,   768,   769,   482,
     483,   484,   770,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   771,     0,     0,     0,     0,     0,
     772,   773,   774,   775,   776,     0,     0,     0,     0,     0,
       0,   777,   778,     0,     0,   863,   779,     0,   691,   780,
       0,   692,     0,     0,   781,  1925,   693,     0,     0,     0,
     694,     0,     0,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,  1379,
     713,   714,     0,     0,     0,     0,     0,     0,     0,  1380,
       0,     0,     0,     0,  1381,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,    42,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,    50,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,  1029,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,   958,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,  1205,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,  1206,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,  1385,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,  1397,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,  1540,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,  1542,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,  1691,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,  1927,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,  2259,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   771,     0,     0,     0,     0,     0,   772,   773,
     774,   775,   776,     0,     0,   863,     0,     0,   691,   777,
     778,   692,     0,     0,   779,     0,   693,   780,     0,     0,
     694,     0,   781,   695,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   696,     0,   697,
       0,     0,     0,     0,     0,   276,     0,     0,     0,     0,
       0,     0,   698,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   699,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   700,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   701,     0,     0,     0,
       0,   702,     0,   703,     0,   704,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   705,   277,     0,     0,   706,     0,     0,
     707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   708,     0,
     709,     0,     0,     0,     0,     0,     0,   710,     0,   711,
     712,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     713,   714,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   715,     0,   278,   279,
       0,   280,   281,   282,   716,   284,   285,   286,   717,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   718,   315,   719,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   720,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   721,   344,   345,   346,   722,   348,
     349,   350,   351,   352,   353,   354,   723,   356,   357,   358,
     359,   360,   361,   362,   363,   724,   365,   725,   367,   368,
     726,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   727,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   728,   404,   405,   729,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   730,   731,   732,
     733,   734,   735,   436,   437,   438,   439,   440,   441,   736,
     443,   444,   445,   446,     0,   447,   737,   738,     0,     0,
       0,     0,   739,   740,   741,   742,   743,   744,   745,   746,
     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
     757,   758,   759,   760,   469,   470,   471,   472,   761,   762,
     763,   764,   765,   766,   767,   768,   769,   482,   483,   484,
     770,     0,   691,     0,     0,   692,     0,     0,     0,     0,
     693,     0,   771,     0,   694,     0,     0,   695,   772,   773,
     774,   775,   776,     0,     0,     0,     0,     0,     0,   777,
     778,   696,     0,   697,   779,     0,     0,   780,     0,   276,
       0,     0,   781,     0,     0,     0,   698,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     700,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     701,     0,     0,     0,     0,   702,     0,   703,     0,   704,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   705,   277,     0,
       0,   706,     0,     0,   707,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   708,     0,   709,     0,     0,     0,     0,     0,
       0,   710,     0,   711,   712,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   713,   714,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     715,     0,   278,   279,     0,   280,   281,   282,   716,   284,
     285,   286,   717,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   718,
     315,   719,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   720,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   721,   344,
     345,   346,   722,   348,   349,   350,   351,   352,   353,   354,
     723,   356,   357,   358,   359,   360,   361,   362,   363,   724,
     365,   725,   367,   368,   726,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   727,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   728,
     404,   405,   729,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,     0,   427,   428,   429,   430,   431,   432,
     433,   730,   731,   732,   733,   734,   735,   436,   437,   438,
     439,   440,   441,   736,   443,   444,   445,   446,     0,   447,
     737,   738,     0,     0,     0,     0,   739,   740,   741,   742,
     743,   744,   745,   746,   747,   748,   749,   750,   751,   752,
     753,   754,   755,   756,   757,   758,   759,   760,   469,   470,
     471,   472,   761,   762,   763,   764,   765,   766,   767,   768,
     769,   482,   483,   484,   770,  1157,  1158,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   771,     0,  1159,     0,
       0,     0,   772,   773,   774,   775,   776,     0,     0,     0,
       0,     0,     0,   777,   778,     0,     0,     0,   779,     0,
       0,   780,     0,     0,     0,     0,   781,     0,     0,     0,
     276,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1160,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1161,     0,     0,     0,
       0,     0,     0,     0,  1162,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1163,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   278,   279,     0,   280,   281,   282,   283,
     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,     0,   427,   428,   429,   430,   431,
     432,   433,   434,   435,     0,     0,  1157,     0,   436,   437,
     438,   439,   440,   441,   442,   443,   444,   445,   446,  1159,
     447,   448,   449,     0,     0,     0,     0,   450,   451,   452,
     453,   454,   455,   456,   457,     0,   458,   459,   460,   461,
       0,     0,   462,   463,   464,   465,   466,   467,   468,   469,
     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
     480,   481,   482,   483,   484,     0,  1164,  1160,  1157,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,  1159,     0,   485,     0,     0,     0,  1173,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,  1157,     0,     0,     0,     0,     0,  1161,     0,     0,
       0,     0,  1157,  1673,  1159,  1162,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1159,     0,     0,     0,  1160,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1157,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1159,     0,
       0,     0,  1160,     0,     0,     0,     0,     0,     0,  1161,
       0,     0,  1163,  1160,     0,     0,     0,  1162,  1334,  1335,
    1336,  1337,  1338,  1339,  1340,     0,  1341,  1342,  1157,  1343,
       0,  1344,     0,     0,     0,     0,     0,     0,     0,  1684,
       0,  1159,  1161,     0,     0,     0,  1160,     0,     0,     0,
    1162,     0,     0,  1161,     0,     0,     0,     0,     0,     0,
       0,  1162,     0,     0,  1157,     0,     0,     0,     0,     0,
     958,  1345,     0,     0,  1163,  1157,     0,  1159,     0,     0,
       0,     0,     0,  1617,     0,     0,  1161,     0,  1159,  1160,
       0,     0,     0,     0,  1162,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1346,     0,     0,  1163,  1922,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1163,     0,
       0,  1347,     0,  1348,     0,  1160,  1349,     0,     0,  1161,
       0,     0,     0,     0,     0,     0,  1160,  1162,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1350,     0,
       0,  1163,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1351,  1161,     0,     0,     0,     0,
       0,     0,     0,  1162,     0,     0,  1161,     0,     0,     0,
       0,     0,     0,     0,  1162,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  1163,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1352,  1353,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1163,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1163,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1164,     0,     0,
    1165,  1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,
    1172,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1164,
       0,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,  1164,     0,     0,  1165,  1166,  1167,  1168,  1169,
    1170,     0,     0,  1164,  1171,  1172,  1165,  1166,  1167,  1168,
    1169,  1170,     0,     0,     0,  1171,  1172,     0,  1174,  1175,
    1176,  1177,  1178,  1179,  1180,     0,  1432,     0,     0,  1174,
    1175,  1176,  1177,  1178,  1179,  1180,  1164,     0,     0,  1165,
    1166,  1167,  1168,  1169,  1170,     0,     0,     0,  1171,  1172,
       0,     0,     0,     0,     0,     0,   276,     0,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1164,
    1892,     0,  1165,  1166,  1167,  1168,  1169,  1170,     0,     0,
       0,  1171,  1172,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1174,  1175,  1176,  1177,  1178,
    1179,  1180,     0,     0,     0,  1164,     0,     0,  1165,  1166,
    1167,  1168,  1169,  1170,     0,     0,  1164,  1171,  1172,  1165,
    1166,  1167,  1168,  1169,  1170,   277,     0,     0,  1171,  1172,
       0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,     0,
       0,     0,  1174,  1175,  1176,  1177,  1178,  1179,  1180,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
     279,     0,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
     398,   399,   400,   401,     0,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
       0,   427,   428,   429,   430,   431,   432,   433,   434,   435,
       0,     0,     0,     0,   436,   437,   438,   439,   440,   441,
     442,   443,   444,   445,   446,     0,   447,   448,   449,  1158,
       0,     0,     0,   450,   451,   452,   453,   454,   455,   456,
     457,     0,   458,   459,   460,   461,     0,     0,   462,   463,
     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
     484,     0,     0,   276,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   485,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  -735,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   277,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   278,   279,     0,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
     401,     0,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
     420,   421,   422,   423,   424,   425,   426,     0,   427,   428,
     429,   430,   431,   432,   433,   434,   435,     0,     0,     0,
       0,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,     0,   447,   448,   449,  1246,     0,     0,     0,
     450,   451,   452,   453,   454,   455,   456,   457,     0,   458,
     459,   460,   461,     0,     0,   462,   463,   464,   465,   466,
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
     477,   478,   479,   480,   481,   482,   483,   484,     0,     0,
     276,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   485,     0,     0,     0,
    1173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   278,   279,     0,   280,   281,   282,   283,
     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,     0,   427,   428,   429,   430,   431,
     432,   433,   434,   435,     0,     0,     0,     0,   436,   437,
     438,   439,   440,   441,   442,   443,   444,   445,   446,     0,
     447,   448,   449,     0,     0,     0,     0,   450,   451,   452,
     453,   454,   455,   456,   457,     0,   458,   459,   460,   461,
       0,     0,   462,   463,   464,   465,   466,   467,   468,   469,
     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
     480,   481,   482,   483,   484,     0,     2,     3,     0,     0,
       0,   237,     0,     4,     0,     0,     0,     0,   238,     0,
       0,  1084,   239,   485,     6,     0,     0,     0,     0,     0,
       0,     0,     0,    10,     0,     0,     0,     0,     0,     0,
       0,     0,    13,     0,     0,     0,   240,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   241,     0,     0,     0,
      15,    16,     0,     0,     0,    18,    19,    20,    21,     0,
      22,    23,    24,    25,    26,    27,     0,    28,    29,    30,
      31,    32,    33,    34,     0,   242,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,    37,     0,     0,     0,     0,     0,     0,    38,     0,
    1086,  1087,     0,     0,     0,     0,   243,     0,     0,     0,
       0,    39,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,    43,     0,     0,    46,     0,     0,     0,   244,
       0,     0,     0,     0,     0,     0,    47,     0,     0,     0,
       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1089,  1090,  1091,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,    52,  1092,     0,
     245,     0,     0,     0,  1093,   246,     0,     0,     0,  1094,
    1095,     0,     0,     0,     0,     0,     0,     0,     0,  1096,
      53,     0,     0,     0,     0,  1097,     0,  1098,     0,  1099,
       0,   247,     0,     0,    55,   248,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   249,   250,     0,     0,
       0,  1100,   251,     0,     0,  1101,  1102,     0,    57,     0,
       0,     0,     0,   677,   252,     0,     0,     0,     0,  1104,
       0,     0,     0,     0,  1105,   276,     0,     0,     0,     0,
      58,     0,     0,     0,     0,     0,   253,     0,   254,     0,
       0,   255,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1107,     0,  1108,     0,     0,
       0,     0,     0,     0,   256,     0,     0,     0,     0,     0,
       0,  1109,  1110,  1111,     0,     0,     0,  -978,     0,     0,
       0,   257,     0,     0,     0,     0,     0,     0,     0,     0,
      61,    62,    63,    64,    65,     0,   258,     0,     0,     0,
       0,     0,     0,  -978,   277,     0,   259,     0,     0,     0,
      67,    68,    69,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
      70,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     427,   428,   429,   430,   431,   432,   433,   434,   435,     0,
     237,     0,     0,   436,   437,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,   276,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
       0,     0,     0,     0,   679,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
       0,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   608,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     609,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   610,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,     0,
     611,   428,   429,   430,   431,   432,   433,   434,   435,     0,
     237,     0,     0,   436,   612,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,   276,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
       0,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   608,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     609,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,   815,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   917,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,   276,
     918,   428,   429,   430,   431,   432,   433,   434,   435,     0,
       0,     0,     0,   436,   437,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,     0,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,   277,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   278,   279,     0,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   403,
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,  1432,   427,   428,   429,   430,   431,   432,
     433,   434,   435,     0,     0,     0,     0,   436,   437,   438,
     439,   440,   441,   442,   443,   444,   445,   446,     0,   447,
     448,   449,     0,   276,     0,     0,   450,   451,   452,   453,
     454,   455,   456,   457,     0,   458,   459,   460,   461,     0,
       0,   462,   463,   464,   465,   466,   467,   468,   469,   470,
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
     481,   482,   483,   484,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   485,     0,     0,     0,   816,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   277,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   278,   279,     0,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
     401,     0,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
     420,   421,   422,   423,   424,   425,   426,   276,   427,   428,
     429,   430,   431,   432,   433,   434,   435,     0,     0,     0,
       0,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,     0,   447,   448,   449,     0,     0,     0,     0,
     450,   451,   452,   453,   454,   455,   456,   457,     0,   458,
     459,   460,   461,     0,     0,   462,   463,   464,   465,   466,
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
     477,   478,   479,   480,   481,   482,   483,   484,     0,     0,
       0,     0,     0,     0,     0,     0,   277,     0,     0,     0,
       0,    42,     0,     0,     0,     0,   485,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,    50,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     278,   279,     0,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,   276,   427,   428,   429,   430,   431,   432,   433,   434,
     435,     0,     0,     0,     0,   436,   437,   438,   439,   440,
     441,   442,   443,   444,   445,   446,     0,   447,   448,   449,
       0,     0,     0,     0,   450,   451,   452,   453,   454,   455,
     456,   457,     0,   458,   459,   460,   461,     0,     0,   462,
     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
     483,   484,     0,     0,     0,     0,     0,     0,     0,     0,
     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   934,
       0,     0,     0,     0,     0,     0,   679,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   278,   279,     0,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,     0,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
     422,   423,   424,   425,   426,   276,   427,   428,   429,   430,
     431,   432,   433,   434,   435,     0,     0,     0,     0,   436,
     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
       0,   447,   448,   449,     0,     0,     0,     0,   450,   451,
     452,   453,   454,   455,   456,   457,     0,   458,   459,   460,
     461,     0,     0,   462,   463,   464,   465,   466,   467,   468,
     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
     479,   480,   481,   482,   483,   484,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   485,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   678,     0,     0,     0,     0,     0,     0,
     679,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
       0,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,   276,
     427,   428,   429,   430,   431,   432,   433,   434,   435,     0,
       0,     0,     0,   436,   437,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,     0,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,   277,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,  -115,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   278,   279,     0,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   403,
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,   276,   427,   428,   429,   430,   431,   432,
     433,   434,   435,     0,     0,     0,     0,   436,   437,   438,
     439,   440,   441,   442,   443,   444,   445,   446,     0,   447,
     448,   449,     0,     0,     0,     0,   450,   451,   452,   453,
     454,   455,   456,   457,     0,   458,   459,   460,   461,     0,
       0,   462,   463,   464,   465,   466,   467,   468,   469,   470,
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
     481,   482,   483,   484,     0,     0,     0,     0,     0,     0,
       0,     0,   277,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   485,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   999,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   278,   279,     0,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
     401,     0,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
     420,   421,   422,   423,   424,   425,   426,   276,   427,   428,
     429,   430,   431,   432,   433,   434,   435,     0,     0,     0,
       0,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,     0,   447,   448,   449,     0,     0,     0,     0,
     450,   451,   452,   453,   454,   455,   456,   457,     0,   458,
     459,   460,   461,     0,     0,   462,   463,   464,   465,   466,
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
     477,   478,   479,   480,   481,   482,   483,   484,     0,     0,
       0,     0,     0,     0,     0,     0,   277,     0,     0,     0,
       0,    42,     0,     0,     0,     0,   485,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1419,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     278,   279,     0,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,   276,   427,   428,   429,   430,   431,   432,   433,   434,
     435,     0,     0,     0,     0,   436,   437,   438,   439,   440,
     441,   442,   443,   444,   445,   446,     0,   447,   448,   449,
       0,     0,     0,     0,   450,   451,   452,   453,   454,   455,
     456,   457,     0,   458,   459,   460,   461,     0,     0,   462,
     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
     483,   484,     0,     0,     0,     0,     0,     0,     0,     0,
     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,    71,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   278,   279,     0,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,     0,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
     422,   423,   424,   425,   426,   276,   427,   428,   429,   430,
     431,   432,   433,   434,   435,     0,     0,     0,     0,   436,
     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
       0,   447,   448,   449,     0,     0,     0,     0,   450,   451,
     452,   453,   454,   455,   456,   457,     0,   458,   459,   460,
     461,     0,     0,   462,   463,   464,   465,   466,   467,   468,
     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
     479,   480,   481,   482,   483,   484,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   485,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   678,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
       0,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,   276,
     427,   428,   429,   430,   431,   432,   433,   434,   435,     0,
       0,     0,     0,   436,   437,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,     0,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,   277,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  1736,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   278,   279,     0,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   403,
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,   276,   427,   428,   429,   430,   431,   432,
     433,   434,   435,     0,     0,     0,     0,   436,   437,   438,
     439,   440,   441,   442,   443,   444,   445,   446,     0,   447,
     448,   449,     0,     0,     0,     0,   450,   451,   452,   453,
     454,   455,   456,   457,     0,   458,   459,   460,   461,     0,
       0,   462,   463,   464,   465,   466,   467,   468,   469,   470,
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
     481,   482,   483,   484,     0,     0,     0,     0,     0,     0,
       0,     0,   277,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   485,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   853,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   278,   279,     0,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
     401,     0,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
     420,   421,   422,   423,   424,   425,   426,   276,   427,   428,
     429,   430,   431,   432,   433,   434,   435,     0,     0,     0,
       0,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,     0,   447,   448,   449,     0,     0,     0,     0,
     450,   451,   452,   453,   454,   455,   456,   457,     0,   458,
     459,   460,   461,     0,     0,   462,   463,   464,   465,   466,
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
     477,   478,   479,   480,   481,   482,   483,   484,     0,     0,
       0,     0,     0,     0,     0,     0,   277,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   485,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,  1506,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     278,   279,     0,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,   276,   427,   428,   429,   430,   431,   432,   433,   434,
     435,     0,     0,     0,     0,   436,   437,   438,   439,   440,
     441,   442,   443,   444,   445,   446,     0,   447,   448,   449,
       0,     0,     0,     0,   450,   451,   452,   453,   454,   455,
     456,   457,     0,   458,   459,   460,   461,     0,     0,   462,
     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
     483,   484,     0,     0,     0,     0,     0,     0,     0,     0,
     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     485,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1556,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   278,   279,     0,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,     0,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
     422,   423,   424,   425,   426,   276,   427,   428,   429,   430,
     431,   432,   433,   434,   435,     0,     0,     0,     0,   436,
     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
       0,   447,   448,   449,     0,     0,     0,     0,   450,   451,
     452,   453,   454,   455,   456,   457,     0,   458,   459,   460,
     461,     0,     0,   462,   463,   464,   465,   466,   467,   468,
     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
     479,   480,   481,   482,   483,   484,     0,     0,     0,     0,
       0,     0,     0,     0,   277,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   485,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,  2008,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   278,   279,
       0,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
     399,   400,   401,     0,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,   417,
     418,   419,   420,   421,   422,   423,   424,   425,   426,   276,
     427,   428,   429,   430,   431,   432,   433,   434,   435,     0,
       0,     0,     0,   436,   437,   438,   439,   440,   441,   442,
     443,   444,   445,   446,     0,   447,   448,   449,     0,     0,
       0,     0,   450,   451,   452,   453,   454,   455,   456,   457,
       0,   458,   459,   460,   461,     0,     0,   462,   463,   464,
     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
       0,     0,     0,     0,     0,     0,     0,     0,   277,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   485,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  2205,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   278,   279,     0,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,     0,   402,   403,
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
     424,   425,   426,   276,   427,   428,   429,   430,   431,   432,
     433,   434,   435,     0,     0,     0,     0,   436,   437,   438,
     439,   440,   441,   442,   443,   444,   445,   446,     0,   447,
     448,   449,     0,     0,     0,     0,   450,   451,   452,   453,
     454,   455,   456,   457,     0,   458,   459,   460,   461,     0,
       0,   462,   463,   464,   465,   466,   467,   468,   469,   470,
     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
     481,   482,   483,   484,     0,     0,     0,     0,     0,     0,
       0,     0,   277,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   485,     0,     0,     0,   816,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   278,   279,     0,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,   356,   357,   358,   359,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
     401,     0,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
     420,   421,   422,   423,   424,   425,   426,   276,   427,   428,
     429,   430,   431,   432,   433,   434,   435,     0,     0,     0,
       0,   436,   437,   438,   439,   440,   441,   442,   443,   444,
     445,   446,     0,   447,   448,   449,     0,     0,     0,     0,
     450,   451,   452,   453,   454,   455,   456,   457,     0,   458,
     459,   460,   461,     0,     0,   462,   463,   464,   465,   466,
     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
     477,   478,   479,   480,   481,   482,   483,   484,     0,     0,
       0,     0,     0,     0,     0,     0,   277,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   485,     0,     0,     0,
     910,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     278,   279,     0,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   609,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,     0,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   917,   412,   413,   414,   415,
     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
     426,   276,   918,   428,   429,   430,   431,   432,   433,   434,
     435,     0,     0,     0,     0,   436,   437,   438,   439,   440,
     441,   442,   443,   444,   445,   446,     0,   447,   448,   449,
       0,     0,     0,     0,   450,   451,   452,   453,   454,   455,
     456,   457,     0,   458,   459,   460,   461,     0,     0,   462,
     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
     483,   484,     0,     0,     0,     0,     0,     0,     0,     0,
     277,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     485,     0,     0,     0,   923,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   278,   279,     0,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,   371,   372,
     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,     0,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
     422,   423,   424,   425,   426,     0,   427,   428,   429,   430,
     431,   432,   433,   434,   435,  1136,   276,     0,     0,   436,
     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
       0,   447,   448,   449,     0,     0,     0,     0,   450,   451,
     452,   453,   454,   455,   456,   457,     0,   458,   459,   460,
     461,     0,     0,   462,   463,   464,   465,   466,   467,   468,
     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
     479,   480,   481,   482,   483,   484,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   485,   277,     0,     0,  1528,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
     279,     0,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
     398,   399,   400,   401,     0,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
     276,   427,   428,   429,   430,   431,   432,   433,   434,   435,
       0,     0,     0,     0,   436,   437,   438,   439,   440,   441,
     442,   443,   444,   445,   446,     0,   447,   448,   449,     0,
       0,     0,     0,   450,   451,   452,   453,   454,   455,   456,
     457,     0,   458,   459,   460,   461,     0,     0,   462,   463,
     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
     484,     0,     0,     0,     0,     0,     0,     0,     0,   277,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   485,
       0,     0,     0,   500,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   278,   279,     0,   280,   281,   282,   283,
     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,   276,   427,   428,   429,   430,   431,
     432,   433,   434,   435,     0,     0,     0,     0,   436,   437,
     438,   439,   440,   441,   442,   443,   444,   445,   446,     0,
     447,   448,   449,     0,     0,     0,     0,   450,   451,   452,
     453,   454,   455,   456,   457,     0,   458,   459,   460,   461,
       0,     0,   462,   463,   464,   465,   466,   467,   468,   469,
     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
     480,   481,   482,   483,   484,     0,     0,     0,     0,     0,
       0,     0,     0,   277,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   485,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  2145,     0,     0,     0,     0,     0,   278,   279,     0,
     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
     400,   401,     0,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
     419,   420,   421,   422,   423,   424,   425,   426,   276,   427,
     428,   429,   430,   431,   432,   433,   434,   435,     0,     0,
       0,     0,   436,   437,   438,   439,   440,   441,   442,   443,
     444,   445,   446,     0,   447,   448,   449,     0,     0,     0,
       0,   450,   451,   452,   453,   454,   455,   456,   457,     0,
     458,   459,   460,   461,     0,     0,   462,   463,   464,   465,
     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
     476,   477,   478,   479,   480,   481,   482,   483,   484,     0,
       0,     0,     0,     0,     0,     0,     0,   277,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   485,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   278,   279,     0,   280,   281,   282,   283,   284,   285,
     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
     346,   347,   348,   349,   350,   351,   352,   353,   354,   355,
     356,   357,   358,   359,   360,   361,   362,   363,   364,   365,
     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
     386,   387,   388,   389,   390,   391,   392,   393,   394,   395,
     396,   397,   398,   399,   400,   401,     0,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
     425,   426,   276,   427,   428,   429,   430,   431,   432,   433,
     434,   435,     0,     0,     0,     0,   436,   437,   438,   439,
     440,   441,   442,   443,   444,   445,   446,     0,   447,   448,
     449,     0,     0,     0,     0,   450,   451,   452,   453,   454,
     455,   456,   457,     0,   458,   459,   460,   461,     0,     0,
     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
     482,   483,   484,     0,     0,     0,     0,     0,     0,     0,
       0,   277,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   485,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   278,   279,     0,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
     382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
       0,   402,   403,   404,   405,   406,   407,   408,   409,   410,
     411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
     421,   422,   423,   424,   425,   426,   276,   427,   428,   429,
     430,   431,   432,   433,   434,   435,     0,     0,     0,     0,
     436,   878,   438,   439,   440,   441,   442,   443,   444,   445,
     446,     0,   447,   448,   449,     0,     0,     0,     0,   450,
     451,   452,   453,   454,   455,   456,   457,     0,   458,   459,
     460,   461,     0,     0,   462,   463,   464,   465,   466,   467,
     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
     478,   479,   480,   481,   482,   483,   484,     0,     0,     0,
       0,     0,     0,     0,     0,   277,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   485,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
     279,     0,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
     398,   399,   400,   401,     0,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
     276,   427,   428,   429,   430,   431,   432,   433,   434,   435,
       0,     0,     0,     0,   436,   880,   438,   439,   440,   441,
     442,   443,   444,   445,   446,     0,   447,   448,   449,     0,
       0,     0,     0,   450,   451,   452,   453,   454,   455,   456,
     457,     0,   458,   459,   460,   461,     0,     0,   462,   463,
     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
     484,     0,     0,     0,     0,     0,     0,     0,     0,   277,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   485,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   278,   279,     0,   280,   281,   282,   283,
     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
     354,   355,   356,   357,   358,   609,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
     394,   395,   396,   397,   398,   399,   400,   401,     0,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   917,   412,
     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
     423,   424,   425,   426,   276,   918,   428,   429,   430,   431,
     432,   433,   434,   435,     0,     0,     0,     0,   436,   437,
     438,   439,   440,   441,   442,   443,   444,   445,   446,     0,
     447,   448,   449,     0,     0,     0,     0,   450,   451,   452,
     453,   454,   455,   456,   457,     0,   458,   459,   460,   461,
       0,     0,   462,   463,   464,   465,   466,   467,   468,   469,
     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
     480,   481,   482,   483,   484,     0,     0,     0,     0,     0,
       0,     0,     0,   277,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   485,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   278,   279,     0,
     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
     340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
     350,   351,   352,   353,   354,   355,   356,   357,   358,  1945,
     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
     400,   401,     0,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
     419,   420,   421,   422,   423,   424,   425,   426,     0,  1946,
     428,   429,   430,   431,   432,   433,   434,   435,     0,     0,
       0,     0,   436,   437,   438,   439,   440,   441,   442,   443,
     444,   445,   446,     0,   447,   448,   449,     0,     0,     0,
       0,   450,   451,   452,   453,   454,   455,   456,   457,     0,
     458,   459,   460,   461,     0,     0,   462,   463,   464,   465,
     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
     476,   477,   478,   479,   480,   481,   482,   483,   484,  1082,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1083,     0,     0,     0,     0,   485,     0,     0,
       0,     0,     0,     0,     0,     0,  1084,     0,     0,     0,
       0,     0,     0,     0,     0,  1085,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,  1086,  1087,     0,     0,     0,
       0,     0,     0,     0,     0,  1088,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,  1089,  1090,
    1091,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  1092,     0,     0,     0,     0,     0,  1093,
       0,     0,     0,     0,  1094,  1095,     0,     0,     0,     0,
       0,     0,     0,     0,  1096,     0,     0,     0,     0,     0,
    1097,     0,  1098,     0,  1099,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1100,     0,     0,     0,
    1101,  1102,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,  1103,     0,  1104,     0,     0,     0,     0,  1105,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1106,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1107,     0,  1108,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1109,  1110,  1111,     0,
       0,     0,  1112
};

static const yytype_int16 yycheck[] =
{
      55,    56,     0,     0,    59,    81,   135,   514,   681,   511,
     646,    66,   843,   687,   516,   907,   235,     5,   972,   559,
    1216,   842,   509,   105,   105,   544,     0,    45,   105,  1114,
     514,   963,    66,   105,  1086,   105,  1516,  1089,  1090,  1091,
    1092,  1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,
    1102,   234,  1104,  1105,   978,  1107,  1108,  1109,  1110,  1111,
     671,   993,   940,   261,   996,  1438,   786,    50,  1129,   680,
    1122,   271,   272,    71,   966,   130,   657,    20,     0,   258,
     972,  1446,   659,   555,   876,   662,    14,   979,  1453,    30,
    1455,    89,    89,  1025,  1459,  1468,   130,   569,   549,    30,
     155,   696,    25,   158,  1469,  1470,  1082,   105,   105,  1474,
    1475,  1476,   904,     0,   206,    30,   567,    17,    32,    51,
       0,    20,     0,   104,  1069,   632,    28,   114,   117,    52,
      70,    32,   806,   109,   114,   999,   928,   929,   930,    27,
      40,    64,   121,    30,    27,    70,   163,   571,   632,    49,
      30,   163,    30,    70,   136,    69,   833,   172,  1493,   646,
    1734,   170,   229,    17,    70,    27,    89,    30,    69,   137,
      93,    46,    51,   136,   137,    30,   268,   136,   977,    62,
     145,   236,    61,   982,    98,   780,   546,   124,    17,   988,
     172,    20,   278,    41,   298,  1770,   703,    98,   170,   998,
    1972,   164,    30,     8,   132,    19,    99,    90,   219,   108,
      17,   134,   267,    20,   269,   125,   130,   175,   236,   703,
     275,   144,   136,   322,   560,    51,   109,    20,   273,   130,
     225,   277,    20,   116,   570,   136,   125,   112,    21,    53,
      61,   119,   120,   310,    12,     9,   160,   109,    62,   860,
      18,   454,   175,   211,  2232,     8,   233,   145,    21,   160,
    1828,  1829,   145,    14,   771,   256,   257,   136,    21,    33,
     777,   778,   779,   156,    60,     8,    90,   496,   497,    62,
     155,   115,    99,   145,    60,   621,   418,   771,   420,   110,
     720,   117,   454,   777,   778,   779,   836,   137,  1129,    49,
     231,   347,    94,   939,   734,   296,   199,    90,   822,   828,
      60,   194,   253,   949,   359,   108,   952,  1513,    51,   208,
     108,   169,    96,   334,   202,   203,   204,   264,     7,  2307,
     281,   282,   283,   109,   517,  2107,   223,   120,   269,   217,
     271,    20,   156,   223,   130,   223,   163,   261,   153,  1722,
     228,   229,   456,    27,   454,   454,   297,   120,   136,   303,
     238,  1936,   216,  1736,  1242,  1738,   244,  1941,   246,   364,
     248,   438,   967,   459,   325,   189,   136,    20,   170,  1954,
     117,   132,   199,   348,   222,   168,   454,   216,    62,    68,
    1725,   332,   270,   196,   172,  1480,   274,   275,   226,   227,
     153,  1333,   438,   454,   164,   368,   223,   317,    62,   216,
     288,   841,   162,   371,   242,   293,   454,   255,     7,   329,
     157,   845,   454,  1355,   460,   644,  1478,  1479,   117,   108,
     258,    20,  1484,  1485,  1029,   109,    90,   454,   493,   637,
     638,   456,   454,   498,   623,   500,   324,   456,   326,  1126,
      48,   136,   224,   256,   509,  1319,  1320,   274,  1434,   493,
     157,   640,   340,   341,   342,   108,   500,   456,   370,   456,
     562,   145,   454,   454,  1419,   454,   456,   532,   533,    68,
     456,   536,   370,   366,   456,   347,   157,   315,   456,   544,
     365,   454,    20,   548,   549,   454,   551,  2065,   439,  2067,
     555,    99,   536,   454,   559,   560,   320,   450,   439,   564,
     508,   508,   567,    59,   569,   570,   571,   551,   458,   108,
    1319,   436,   421,   438,   456,   145,   560,   116,   456,    59,
     585,   660,   661,   458,   508,   457,   570,   571,   564,   462,
     454,   458,   597,   598,   322,  1052,  1053,   319,   603,   448,
     449,   450,   458,   454,   609,   610,   611,   371,  1077,   614,
    1155,   921,   922,   597,   619,   620,   621,   339,  1052,  1053,
     457,   626,  1768,   436,   453,   438,   631,   457,   456,   457,
     108,   436,   159,   438,   173,   454,   620,   621,   130,    52,
     366,   646,  2221,   619,   370,   378,   213,   631,  1193,   343,
     626,    64,   657,   658,   659,   370,   222,   662,   368,    42,
      43,  1010,  1011,  1012,  1128,    31,  1083,    12,  1085,   674,
    1019,  1072,  1258,   678,   679,   369,    89,    12,   421,   303,
      93,  1563,     7,   421,    29,   312,  1103,   430,   431,   255,
    1159,   304,    58,  1224,    29,    20,   456,   264,   458,   321,
    1227,   444,   445,   446,   447,   448,   449,   450,   446,   447,
     448,   449,   450,   115,   647,   720,    56,  2296,  2297,  2298,
     348,   134,  1392,  1145,   348,    51,   454,  1149,    60,   734,
     678,   678,  1189,  1278,   159,    61,   102,  1194,  1195,  1196,
     306,  1583,   366,    68,   454,   438,   370,   895,    10,    89,
    1521,  1215,  1216,   438,   678,  1189,   606,   926,   927,   909,
    1194,  1195,  1196,  2086,   147,   148,   438,  1595,  1596,  1643,
     899,   900,     4,   458,   418,   277,   420,   117,   436,   456,
     438,   458,   348,   108,  2099,  2100,   436,   438,   438,   418,
     438,   116,   421,   422,   423,   424,   425,   426,   321,    61,
     458,   430,   431,    35,    36,  1807,  1808,   458,   458,   814,
     458,   456,   159,   458,   159,   444,   445,   446,   447,   448,
     449,   450,    67,   828,   159,   137,   349,   350,   421,   834,
     343,   836,    94,   459,   454,   461,   841,   430,   431,   456,
     845,   458,   847,   366,   438,   439,  1588,   370,   173,   456,
     343,   458,   445,   446,   447,   448,   449,   450,   343,   807,
     865,   845,   387,   847,   869,   159,   128,   392,   393,   456,
     159,   458,   397,   135,  2189,  1008,   456,  2192,   458,   418,
     208,   886,   421,   422,   423,   424,   425,   426,   343,   234,
     235,   430,   431,   898,   456,   456,   458,   458,   903,   234,
     235,   336,   337,   908,  2334,   444,   445,   446,   447,   448,
     449,   450,   917,   918,   898,  2180,  2181,   139,   886,   141,
     925,   143,   144,   462,   436,   461,   438,   932,   418,   934,
     420,  1942,   438,   439,   939,   940,   941,  1948,  1820,    25,
    1501,   925,   453,   421,   949,   163,    51,   952,  1509,  1984,
     439,   120,   430,   431,  1444,  1578,   453,   458,  1581,  1961,
      13,  1413,  1414,  1427,  1868,   456,    52,   458,   446,   447,
     448,   449,   450,   978,  1438,   456,   170,   458,    64,  1524,
     456,  1471,   458,   456,   989,   458,   934,   934,   333,   129,
     938,   938,  1461,   456,   999,   458,   418,   459,   333,  2112,
     456,    44,   458,    89,  1468,   454,  1551,    93,   458,   354,
     934,   456,   456,   458,   154,   456,   156,   458,  1563,   354,
     160,   161,   162,   456,  1610,   458,  1868,  1613,   114,    20,
     110,  1063,  1063,  1059,  1060,   114,  1063,  1582,   456,   348,
     458,  1063,  1813,  1063,  1213,   456,  1051,   458,   134,  1513,
    1729,  1730,  1516,  1732,  1733,   456,   131,   458,   144,   456,
     456,   458,   458,  2176,  1069,  1502,  2179,  1072,  1073,  2080,
    2183,    63,  1077,  2084,   456,   439,   458,   163,   232,   458,
     456,  1029,   458,   456,   456,   458,   458,  1035,  1035,   175,
    1524,  1715,  1716,   418,   419,   267,   421,   422,   423,   424,
     425,   426,   456,    19,    20,   430,   431,   456,   299,  1951,
    1058,   265,   456,  2226,    30,  1063,  1063,  2230,    46,   444,
     445,   446,   447,   448,   449,   450,   456,   281,   282,   283,
     284,  1136,   454,  1081,  1081,   460,   456,  2283,   458,  1144,
    1145,  1146,   458,   454,  1149,  1113,    25,  1085,   878,  2262,
     880,  1156,  1136,  1158,  1159,  1123,   454,   454,   454,   454,
     461,  1942,  1146,   454,   454,   439,  2177,  1948,  1106,    19,
      20,   325,   454,    52,    90,   454,   454,   454,   454,    25,
      30,  1186,  1805,  1806,   112,    64,   461,   454,   439,   454,
     454,   459,   461,    25,   110,   454,   112,   454,   114,  2345,
    1148,  1148,   454,   461,  1209,   454,    52,   454,   454,   459,
      89,   454,   454,   454,    93,   454,   454,   454,    64,  1224,
      52,  1226,  1227,   454,   454,   439,   454,   155,   454,   454,
     454,   454,    64,  1238,   454,   114,  1241,  1242,   166,   167,
     156,  1246,   454,    89,  1734,   454,  2150,    93,   454,   454,
    1740,   454,   454,  1258,   454,   134,  2138,    89,  1722,   454,
     110,    93,   112,   453,   114,   144,   454,   454,   454,   454,
     454,   454,  1736,   189,  1738,  2277,   454,   454,   454,  1865,
    1825,   454,   160,   454,   163,    61,   202,   454,   134,   454,
     454,   137,   454,   454,   454,   454,   175,   454,   144,  2080,
     454,   454,   134,  2084,  1768,   454,   156,   223,  2150,   454,
     454,   454,   144,   454,  1319,  1320,   454,   439,  1487,  1788,
    1789,   454,   266,     8,  1793,  1794,  1495,   464,    44,   175,
    1278,   454,   163,  1797,   453,   456,   453,  1960,   153,   189,
     439,     3,     4,   175,     6,    51,   458,   456,    10,   453,
     144,    13,   202,    15,    16,   279,    18,    19,    20,    21,
      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
      32,    33,    34,   223,   456,    37,    38,    39,  1842,  1836,
     418,   462,   456,   453,    46,    47,   453,   456,    56,    89,
      19,    53,    21,    22,   458,    57,  2177,   458,    89,    61,
     118,   456,  1836,   245,   458,    67,    68,    69,   438,   461,
     461,   461,   458,   458,  1419,   456,   458,   331,   458,   458,
     456,   458,    10,   418,    53,   460,   458,  1432,  1433,   460,
    1435,   458,    13,    62,   458,  1440,  1441,   456,  1443,  1444,
    1445,    21,    13,   456,  1449,   114,  1451,     8,    49,  2073,
    1940,  1941,   448,  1943,  1944,    61,  1461,  1947,   110,   387,
     454,    90,  1467,   125,   392,   393,  1471,  1451,   454,   397,
       8,   456,  1477,    61,     7,   438,   458,   458,   458,   232,
     458,  1933,    13,    57,   114,    89,    89,    20,   245,   458,
     152,   120,   462,  1477,  1499,  1959,   462,  1502,  1436,   419,
     458,   460,  1971,     4,  1442,   460,    94,    95,   436,   456,
     438,   439,   265,   462,   456,  1499,   456,   462,   446,   447,
     458,   462,   110,     4,     5,  1989,   462,   156,    51,   282,
     453,   284,   458,   458,   287,    68,   198,   456,   456,   168,
     128,   458,   204,    24,   285,   458,   458,   135,   458,   458,
     458,    32,  1500,  1500,   458,  1493,   309,   439,    39,   156,
     189,    22,   438,  2015,   438,   137,   439,   439,  1516,  1516,
    2004,  2239,   325,   439,    55,   108,   439,   439,   438,   456,
    2037,    62,   439,   116,  1589,   439,   439,  1592,    69,  2079,
    1595,  1596,   114,  2261,   458,    67,  2264,  2265,  2266,   454,
    2268,    20,   603,  2037,   453,  1610,   454,   454,  1613,     7,
     142,   273,   463,   125,   453,    48,    89,   454,    99,   197,
     373,   374,  2086,   157,   462,    65,   462,   462,   462,   462,
     454,    90,   633,  2301,   462,   164,   454,  2305,  1643,   153,
     173,   454,   439,   439,   223,   454,   127,     7,  2112,    55,
     145,   109,   456,  1679,   439,   136,   458,  2325,   139,   458,
      20,  1599,  1600,  1601,  2116,   458,   456,   454,   328,   458,
     458,   453,   458,   154,   458,   458,   454,   458,   458,   160,
     161,   458,   157,   458,   458,   686,   157,   688,  1714,   454,
     691,   320,   112,   160,    90,   439,    90,   115,   454,   114,
     454,   453,    13,    13,   454,   439,  1711,   458,    68,   458,
     458,   458,  2176,   458,   353,  2179,  2180,  2181,   454,  2183,
     439,   454,   454,   454,   454,   454,   454,   454,   241,  1734,
      61,   454,  2196,   458,   458,  1740,   301,   454,    90,   454,
     438,   120,   371,   454,   458,   458,   438,   160,   108,   378,
     458,   458,    97,   458,   458,   276,   116,   285,   285,   456,
     439,   143,  2226,   458,    60,    13,  2230,    13,    13,   250,
      42,   438,    13,   254,   285,   147,   454,   438,   259,   780,
     781,   439,   439,  1788,  1789,   439,    13,  1725,  1793,  1794,
     439,    13,    97,   137,  1799,   439,   439,  1998,  2262,   458,
     858,  1814,  1842,  2134,  2196,   508,  1042,   941,  1742,  1603,
    2206,   950,  1259,   173,  1606,  1799,  1823,  1263,  1823,  2283,
     955,  1847,  1156,   807,   305,  1018,  1831,   308,   490,   491,
     807,   807,   494,  1048,   517,   316,  1972,   318,   871,   234,
    1565,   959,     7,  1797,  2107,  1850,   961,  1504,  1980,  1504,
    1796,   553,  1963,    60,   844,    20,  1126,   338,  1500,   908,
    1865,  1443,   863,   344,   851,   886,  1814,  1814,   638,  2290,
    2334,  1482,  1203,   834,  1063,  1073,   586,  1825,  1112,     0,
      41,  2345,   498,   903,    61,   418,   887,   888,   421,   422,
     423,   424,   425,   426,    53,   826,  1654,   430,   431,   598,
    1319,  1224,    -1,    68,    -1,    -1,    -1,    -1,    -1,    30,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   462,
      -1,    -1,    -1,    -1,    -1,  1940,  1941,    -1,  1943,  1944,
      -1,    -1,  1947,   108,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   116,    -1,    -1,    -1,    -1,    -1,   958,    -1,    -1,
      -1,    -1,    -1,   964,  1990,    -1,  1971,    -1,   969,   970,
     971,    -1,   973,    -1,   975,   976,   977,    -1,    -1,    -1,
      -1,   982,   983,    -1,    -1,    -1,   987,   988,    -1,   990,
     991,   992,  1997,   994,   995,    -1,   997,   998,   119,   120,
      -1,    -1,  1003,  1004,  1005,  1006,  1007,  1008,   173,    -1,
      -1,    -1,    -1,  1997,  1015,  2020,    -1,    -1,    -1,    -1,
      -1,  1022,  1023,    -1,    -1,    -1,     0,    -1,  1029,    -1,
      -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,  1040,
      -1,    -1,    -1,    -1,  1045,  1046,  1047,    20,    -1,  1050,
    1998,  1998,    -1,  2132,    -1,    -1,    30,    -1,   418,   419,
      -1,   421,   422,   423,   424,   425,   426,  2072,    -1,    -1,
     430,   431,    -1,    -1,  2079,    -1,    -1,    -1,    -1,     7,
      -1,   202,   203,   204,   444,   445,   446,   447,   448,   449,
     450,    -1,    20,    -1,    -1,    68,   217,    -1,    -1,    -1,
     460,    -1,   223,    -1,    -1,    -1,    -1,   228,   229,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   238,    -1,    -1,
      -1,    -1,    -1,   244,    -1,   246,    -1,   248,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   108,  2141,     7,    -1,    -1,
      68,    -1,    -1,   116,    -1,   119,   120,    -1,    -1,   270,
      20,  1152,    -1,   274,   275,  1156,  1157,    -1,    -1,    -1,
    1161,  1162,  1163,    -1,  1165,    -1,    -1,   288,    -1,    -1,
    1171,  1172,   293,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
     108,    51,    -1,  1184,    -1,  2133,    -1,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     173,  2206,    -1,   324,    -1,   326,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   340,
     341,   342,    -1,    -1,    -1,    -1,    -1,    -1,   202,   203,
     204,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,
      -1,    -1,    -1,   217,    -1,   173,   116,    -1,    -1,   223,
      -1,    -1,    -1,   418,   228,   229,   421,   422,   423,   424,
     425,   426,  1263,    -1,   238,   430,   431,    -1,    -1,  1270,
     244,    -1,   246,    -1,   248,    -1,    -1,    -1,    -1,   444,
     445,   446,   447,   448,   449,   450,    -1,    -1,    -1,    -1,
      -1,   456,    -1,   458,    -1,  1296,   270,    -1,     7,    -1,
     274,   275,    -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,
    1311,    20,    -1,    -1,   288,    -1,    -1,    -1,  1319,   293,
      -1,    -1,  1323,    -1,  1325,    -1,  1327,    -1,    -1,  1330,
      -1,    -1,    -1,    -1,    -1,   456,   457,    -1,    -1,    48,
      -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,
     324,    -1,   326,    -1,    -1,  1356,  1357,    -1,    20,    68,
      -1,    -1,    -1,    -1,    -1,    -1,   340,   341,   342,    -1,
      -1,    -1,    -1,    -1,  1375,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,  1383,    -1,    -1,    -1,    -1,  1388,    -1,    -1,
      -1,    -1,    -1,    -1,  1395,    -1,  1397,    -1,     7,   108,
      -1,    -1,    -1,    -1,    -1,    -1,    68,   116,    -1,    -1,
      -1,    20,    -1,    -1,    -1,    -1,    -1,  1418,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   418,   108,    -1,   421,   422,
     423,   424,   425,   426,   116,    -1,    -1,   430,   431,    68,
      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
      -1,   444,   445,   446,   447,   448,   449,   450,    20,    -1,
      -1,    -1,    -1,   457,    -1,    -1,    -1,   460,    -1,    -1,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,   108,
      -1,    -1,   430,   431,    -1,    -1,    -1,   116,    -1,    -1,
      -1,   173,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,     7,    68,    -1,    -1,    -1,
      -1,    -1,   460,    -1,    -1,    -1,    -1,    -1,    20,  1540,
      -1,  1542,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,
      -1,   421,   422,   423,   424,   425,   426,    -1,    -1,    -1,
     430,   431,    -1,    -1,   173,    -1,   108,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,     7,    68,    -1,   458,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,
      -1,    -1,    -1,    -1,    -1,  1606,  1607,    -1,  1609,    -1,
      -1,    -1,    -1,  1614,    -1,    -1,  1617,    -1,    -1,  1620,
      -1,    -1,    -1,  1624,  1625,  1626,   108,  1628,  1629,  1630,
      -1,    -1,  1633,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    1641,    -1,    -1,    -1,    -1,    -1,    68,  1648,    -1,    -1,
      -1,    -1,  1653,  1654,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,  1665,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1678,    -1,    -1,
      -1,    -1,    -1,  1684,  1685,  1686,   108,    -1,  1689,    -1,
    1691,   173,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,  1703,    -1,  1705,    -1,  1707,  1708,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,     7,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    20,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   458,
      -1,   173,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      68,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    -1,   456,    -1,   458,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
     108,   430,   431,    -1,    -1,    -1,    -1,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,  1846,    -1,    -1,    -1,   458,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,   173,    -1,    -1,   430,   431,
      -1,  1892,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,  1922,    -1,    -1,    -1,    -1,  1927,    -1,  1929,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,  1939,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,  1957,  1958,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   458,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,  2022,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,  2034,  2035,    -1,   458,    -1,  2039,    -1,
      -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      12,    -1,    -1,    15,    -1,    -1,    18,  2058,  2059,    -1,
      -1,    23,  2063,    -1,    -1,    27,    -1,  2068,    30,  2070,
      -1,    -1,    -1,    35,    36,  2076,    -1,    -1,    -1,    -1,
      -1,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
      52,    -1,    -1,    -1,    -1,  2096,    -1,    59,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     418,    93,    -1,   421,   422,   423,   424,   425,   426,    -1,
      -1,   103,   430,   431,    -1,    -1,   108,    -1,   110,    -1,
     112,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,   130,   131,
     458,    -1,   134,    -1,    -1,   137,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,
      -1,    -1,   164,    -1,   166,   167,    -1,    -1,    -1,  2210,
      -1,    -1,    -1,    -1,    -1,   177,   178,    -1,    -1,    -1,
      -1,  2222,  2223,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   193,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    -1,   347,   348,   349,   350,   351,
     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    -1,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
      -1,    -1,    -1,   435,   436,   437,   438,   439,    -1,     4,
      -1,    -1,    -1,    -1,   446,   447,   448,    12,    -1,   451,
      15,    -1,   454,    18,    -1,    -1,    -1,   459,    23,    -1,
      -1,    -1,    27,    -1,    -1,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,   179,   180,   181,   182,   183,   184,
     185,    -1,   187,   188,   429,   190,    -1,   192,    -1,     4,
     435,   436,   437,   438,   439,    -1,    -1,    12,    -1,    -1,
      15,   446,   447,    18,    -1,    -1,   451,    -1,    23,   454,
      -1,    -1,    27,    -1,   459,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   232,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
     265,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   282,    93,   284,
      -1,    -1,   287,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,   309,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
     325,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,   373,   374,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,     4,
     435,   436,   437,   438,   439,    -1,    -1,    12,    -1,    -1,
      15,   446,   447,    18,    -1,    -1,   451,    -1,    23,   454,
      -1,    -1,    27,    -1,   459,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,     4,
     435,   436,   437,   438,   439,    -1,    -1,    12,    -1,    -1,
      15,   446,   447,    18,    -1,    -1,   451,    -1,    23,   454,
      -1,    -1,    27,    -1,   459,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,     7,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    20,    -1,    -1,    -1,
     435,   436,   437,   438,   439,    -1,    -1,    -1,    -1,    -1,
      -1,   446,   447,    -1,    -1,    -1,   451,    -1,    -1,   454,
      -1,     7,    -1,    -1,   459,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    68,    -1,   108,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   116,    -1,    -1,    -1,    -1,     7,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      68,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     116,    -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   173,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,
      -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    20,   173,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,   108,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,
      -1,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    20,   173,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    68,    -1,   108,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,     7,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    20,   173,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    68,    -1,   108,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   116,    -1,    -1,    -1,    -1,     7,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      20,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      68,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     108,    -1,    -1,    -1,    -1,    -1,     7,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,
      -1,    -1,    -1,    -1,   418,    -1,   116,   421,   422,   423,
     424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   173,    -1,    68,    -1,    -1,
     444,   445,   446,   447,   448,   449,   450,    -1,    -1,    -1,
      -1,    -1,   418,    -1,   458,   421,   422,   423,   424,   425,
     426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   173,    -1,    -1,    -1,   108,   444,   445,
     446,   447,   448,   449,   450,   116,    -1,    -1,    -1,    -1,
     418,    -1,   458,   421,   422,   423,   424,   425,   426,    -1,
      -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,   418,    -1,
     458,   421,   422,   423,   424,   425,   426,    -1,    -1,    -1,
     430,   431,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,    -1,   418,    -1,   458,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       7,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    20,   418,    -1,   458,   421,   422,   423,
     424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     444,   445,   446,   447,   448,   449,   450,    -1,    -1,    -1,
      -1,    -1,   418,    -1,   458,   421,   422,   423,   424,   425,
     426,    68,    -1,    -1,   430,   431,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,   444,   445,
     446,   447,   448,   449,   450,    -1,    -1,    -1,    -1,    20,
     418,    -1,   458,   421,   422,   423,   424,   425,   426,    -1,
      -1,   108,   430,   431,    -1,    -1,    -1,    -1,    -1,   116,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,   418,     7,
     458,   421,   422,   423,   424,   425,   426,    68,    -1,    -1,
     430,   431,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,    -1,   173,    -1,   458,    -1,
       7,    -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,
      -1,    -1,    -1,    20,    -1,   116,    -1,    -1,    -1,    -1,
      68,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,
     421,   422,   423,   424,   425,   426,    -1,    -1,     7,   430,
     431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    20,    -1,   444,   445,   446,   447,   448,   449,   450,
     108,    68,    -1,    -1,    -1,    -1,    -1,   458,   116,    -1,
      -1,    -1,   173,    -1,    -1,    -1,     7,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
      -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
      -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   173,    -1,    20,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,   108,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,     7,   173,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    68,    -1,   108,    20,    -1,
      -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,     7,   173,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   108,    20,    -1,    -1,    -1,
      -1,    -1,    -1,   116,    -1,    -1,    68,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   418,   173,    -1,   421,   422,   423,   424,   425,   426,
      -1,    -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    68,    -1,   108,   444,   445,   446,
     447,   448,   449,   450,   116,    -1,    -1,    -1,     7,    -1,
     173,   458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   116,    -1,    -1,    -1,    -1,   418,    -1,     7,
     421,   422,   423,   424,   425,   426,    -1,    -1,    -1,   430,
     431,   173,    20,    -1,    -1,    -1,    -1,    -1,    -1,    68,
      -1,    -1,    -1,   444,   445,   446,   447,   448,   449,   450,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   458,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,   108,
      68,    -1,   430,   431,    -1,    -1,    -1,   116,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     458,   418,    -1,    -1,   421,   422,   423,   424,   425,   426,
     108,    -1,    -1,   430,   431,    -1,    -1,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,     7,    -1,   444,   445,   446,
     447,   448,   449,   450,   173,    -1,    -1,    -1,    20,   418,
      -1,   458,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,     7,   173,    -1,   418,    -1,   458,
     421,   422,   423,   424,   425,   426,    68,    20,    -1,   430,
     431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   444,   445,   446,   447,   448,   449,   450,
      -1,    -1,    -1,    -1,    -1,   418,    -1,   458,   421,   422,
     423,   424,   425,   426,    -1,    -1,   108,   430,   431,    -1,
      -1,    -1,    -1,    -1,   116,    68,    -1,    -1,     7,    -1,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,    -1,
      -1,    20,    -1,    -1,    -1,   458,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,   108,    -1,    -1,   430,   431,
      -1,    -1,    -1,   116,    -1,    -1,    -1,     7,    -1,    -1,
      -1,   173,   444,   445,   446,   447,   448,   449,   450,    68,
      20,    -1,    -1,    -1,   418,    -1,   458,   421,   422,   423,
     424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,
     444,   445,   446,   447,   448,   449,   450,    -1,    -1,   108,
     173,    20,    -1,    -1,   458,    -1,    -1,   116,    68,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
       7,    -1,   421,   422,   423,   424,   425,   426,   108,    68,
      -1,   430,   431,    20,    -1,    -1,   116,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   173,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,    -1,    -1,    -1,     7,   458,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,   108,
      -1,    20,   430,   431,    -1,    -1,    -1,   116,    -1,    -1,
      -1,    68,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,   173,    -1,    -1,    -1,    -1,    -1,    -1,
     458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
      -1,   108,    20,    -1,    -1,    -1,    -1,    -1,    -1,   116,
      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,   108,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,
      68,    20,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,    -1,   173,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
     108,    -1,    -1,    -1,    -1,    -1,   458,    -1,   116,    68,
      -1,    -1,     7,    -1,   173,   418,    -1,    -1,   421,   422,
     423,   424,   425,   426,    -1,    20,    -1,   430,   431,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,   108,
      -1,    -1,    -1,    -1,    -1,   458,    -1,   116,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,     7,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,   108,   173,    20,    -1,    -1,    -1,   458,
      -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,
      -1,   421,   422,   423,   424,   425,   426,    -1,    -1,    -1,
     430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    68,    -1,    -1,    -1,    -1,   458,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,   173,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,     7,   444,   445,   446,   447,   448,
     449,   450,    -1,   108,    -1,    -1,    -1,    20,    -1,   458,
      -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   418,    -1,    -1,   421,   422,   423,   424,   425,   426,
      -1,    -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,     7,    -1,    -1,    -1,   444,   445,   446,
     447,   448,   449,   450,    -1,    68,    20,    -1,    -1,   418,
      -1,   458,   421,   422,   423,   424,   425,   426,   173,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,     7,    -1,    -1,   108,    -1,    -1,    -1,   458,
      -1,    -1,    -1,   116,    68,    20,    -1,    -1,    -1,    -1,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,    -1,
      -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,     7,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,   108,    -1,    20,    -1,    -1,    -1,
     458,    -1,   116,    68,    -1,    -1,    -1,    -1,    -1,   418,
     173,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,     7,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,   108,    68,    20,    -1,    -1,    -1,   458,
      -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   418,    -1,    -1,   421,   422,   423,   424,
     425,   426,    -1,    -1,   108,   430,   431,    -1,    -1,    -1,
      -1,    -1,   116,    68,    -1,    -1,    -1,    -1,     7,   444,
     445,   446,   447,   448,   449,   450,    -1,    -1,   173,    -1,
      -1,    20,    -1,   458,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,     7,
      -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,
      -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    68,
      -1,    -1,    -1,   418,    -1,    -1,   421,   422,   423,   424,
     425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,   444,
     445,   446,   447,   448,   449,   450,    -1,    -1,   173,   108,
      68,    20,    -1,   458,    -1,    -1,    -1,   116,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,
     108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    68,
      20,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,   422,
     423,   424,   425,   426,   173,    -1,    -1,   430,   431,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,   108,
      -1,    -1,    -1,    -1,    -1,   458,    -1,   116,    68,    -1,
      -1,    -1,    -1,    -1,   418,   173,    -1,   421,   422,   423,
     424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,
     444,   445,   446,   447,   448,   449,   450,    -1,   108,    20,
      -1,    -1,    -1,    -1,   458,    -1,   116,    -1,    -1,    -1,
      -1,    -1,    -1,   418,   173,    -1,   421,   422,   423,   424,
     425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,   444,
     445,   446,   447,   448,   449,   450,    -1,    68,    -1,    20,
      -1,    -1,    -1,   458,   418,    -1,    -1,   421,   422,   423,
     424,   425,   426,   173,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     444,   445,   446,   447,   448,   449,   450,   108,    -1,    -1,
      -1,    -1,    -1,    -1,   458,   116,    -1,    68,    -1,    -1,
      -1,    -1,    -1,   418,    -1,    -1,   421,   422,   423,   424,
     425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
     445,   446,   447,   448,   449,   450,    -1,   108,    -1,    -1,
      -1,    -1,    -1,   458,    -1,   116,    -1,    -1,    -1,    -1,
      -1,     7,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,   173,    -1,    -1,    -1,    -1,    -1,    -1,   458,
     418,    -1,    68,   421,   422,   423,   424,   425,   426,    -1,
      -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     458,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,   418,
     116,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   458,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,
      -1,   421,   422,   423,   424,   425,   426,   173,    -1,    -1,
     430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   458,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,
     421,   422,   423,   424,   425,   426,    -1,    -1,    -1,   430,
     431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   444,   445,   446,   447,   448,   449,   450,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   458,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,
     421,   422,   423,   424,   425,   426,    -1,    -1,    -1,   430,
     431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   444,   445,   446,   447,   448,   449,   450,
      12,    -1,    -1,    15,    -1,    -1,    18,   458,    -1,    -1,
      -1,    23,    -1,    -1,    -1,    27,    -1,    -1,    30,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
      52,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    93,   418,    -1,    -1,   421,   422,   423,   424,   425,
     426,   103,    -1,    -1,   430,   431,   108,    -1,   110,    -1,
     112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,   445,
     446,   447,   448,   449,   450,    -1,    -1,    -1,   130,   131,
     456,    -1,   134,    -1,    -1,   137,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,
      -1,    -1,   164,    -1,   166,   167,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   177,   178,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   193,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    -1,   347,   348,   349,   350,   351,
     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    -1,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   417,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,
      -1,    -1,    -1,   435,   436,   437,   438,   439,    -1,    -1,
      -1,    -1,    -1,    -1,   446,   447,   448,    12,    -1,   451,
      15,    -1,   454,    18,    -1,    -1,    -1,   459,    23,   461,
      -1,    -1,    27,    -1,    -1,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,
     435,   436,   437,   438,   439,    -1,    -1,    12,    -1,    -1,
      15,   446,   447,    18,    -1,    -1,   451,    -1,    23,   454,
      -1,    -1,    27,    -1,   459,    30,   461,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,
     435,   436,   437,   438,   439,     7,    -1,    -1,     5,    -1,
      -1,   446,   447,    -1,    11,    12,   451,    -1,    20,   454,
      -1,    18,    -1,    -1,   459,    -1,   461,    24,    -1,    -1,
      -1,    -1,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
      -1,    38,    39,    -1,    -1,    -1,    -1,     7,    45,    51,
      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
      20,    -1,    -1,    -1,    -1,    -1,    68,    -1,    65,    66,
      -1,    -1,    69,    70,    71,    72,    73,    -1,    75,    76,
      77,    78,    79,    80,     7,    82,    83,    84,    85,    86,
      87,    88,    -1,    -1,    -1,    92,    -1,    20,    -1,    -1,
      -1,    98,    -1,    -1,    -1,    -1,   108,    -1,    68,   106,
      -1,    -1,    -1,    -1,   116,    -1,   113,    -1,    -1,    -1,
      -1,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   126,
      -1,    -1,    -1,   130,    20,    -1,   133,    -1,    -1,   136,
     137,   138,   139,   140,    -1,    68,    -1,    -1,   108,    -1,
      -1,    -1,    -1,    -1,   151,    -1,   116,     7,    -1,    -1,
     157,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,
      20,   173,    -1,    -1,    -1,   172,    -1,    -1,    -1,    -1,
      -1,    -1,    68,    -1,    -1,   108,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,     7,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     207,    20,    -1,   173,    -1,   212,    -1,    -1,    68,    -1,
      -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     116,    -1,    -1,    -1,     7,    -1,    -1,    -1,   235,   236,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,    -1,
     173,    -1,   249,    -1,    -1,    -1,    -1,   254,   108,    68,
      -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,
      -1,    -1,    -1,     7,    -1,    -1,   273,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    20,   173,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,   295,   108,
      -1,    -1,    -1,    -1,    -1,    -1,   303,   116,    -1,     7,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   314,    -1,    -1,
      -1,    -1,    20,   173,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    68,   108,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,
       7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   355,   356,
     357,   358,   359,    20,   173,    -1,   363,    -1,    -1,    -1,
      68,    -1,    -1,    -1,   108,    -1,    -1,    -1,   375,   376,
     377,    -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     108,    68,    -1,    -1,    -1,    -1,   418,    -1,   116,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,   173,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,   108,    -1,    -1,   456,    -1,    -1,   454,   418,   116,
      -1,   421,   422,   423,   424,   425,   426,    -1,     7,    -1,
     430,   431,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,
      -1,    20,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,   418,   456,    -1,   421,   422,
     423,   424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,    68,
      -1,    -1,   418,   456,    -1,   421,   422,   423,   424,   425,
     426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,   445,
     446,   447,   448,   449,   450,    -1,    -1,    -1,   418,   108,
     456,   421,   422,   423,   424,   425,   426,   116,    -1,    -1,
     430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,   449,
     450,    -1,    -1,    -1,    -1,    -1,   456,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
       7,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    20,   173,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,   418,    -1,   456,   421,   422,
     423,   424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,    -1,
      -1,    68,    20,   456,   418,    -1,    -1,   421,   422,   423,
     424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     444,   445,   446,   447,   448,   449,   450,    -1,    -1,    -1,
     418,   108,   456,   421,   422,   423,   424,   425,   426,   116,
      68,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,   456,     7,
      -1,   418,    -1,    -1,   421,   422,   423,   424,   425,   426,
     108,    -1,    20,   430,   431,    -1,    -1,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   173,   444,   445,   446,
     447,   448,   449,   450,    -1,     7,    -1,    -1,    -1,   456,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,     7,    -1,    -1,   173,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
     108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,
      -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    20,    -1,
      -1,   430,   431,    68,    -1,    -1,   108,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   116,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,    -1,    -1,   456,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,
      -1,     7,    -1,   108,    -1,    -1,    68,    -1,    -1,    -1,
      -1,   116,    -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   173,    -1,    -1,     7,    -1,     9,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   108,    20,    -1,    -1,
      -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
      33,    -1,    68,    -1,    -1,    -1,    -1,    -1,   173,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
      -1,   418,   108,    -1,   421,   422,   423,   424,   425,   426,
     116,   173,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,
     447,   448,   449,   450,    -1,   108,    -1,    -1,    -1,   456,
      -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,    -1,
      -1,    -1,   430,   431,    -1,    -1,    -1,   173,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,    -1,    -1,   456,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     418,    -1,    -1,   421,   422,   423,   424,   425,   426,    -1,
      -1,    -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,
     448,   449,   450,    -1,    -1,    -1,   418,    -1,   456,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,   418,   456,    -1,   421,   422,   423,   424,
     425,   426,    -1,    -1,    -1,   430,   431,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
     445,   446,   447,   448,   449,   450,    -1,    -1,    -1,    -1,
      -1,   456,    -1,    -1,    -1,    -1,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    12,
      -1,    -1,    15,    -1,   456,    18,    -1,    -1,    -1,    -1,
      23,    -1,    -1,    -1,    27,    -1,    -1,    30,    -1,    -1,
      -1,    -1,   418,   419,    -1,   421,   422,   423,   424,   425,
     426,    44,    -1,    46,   430,   431,    -1,    -1,    -1,    52,
      -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,   444,   445,
     446,   447,   448,   449,   450,   418,    69,    -1,   421,   422,
     423,   424,   425,   426,    -1,    -1,    -1,   430,   431,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      93,   444,   445,   446,   447,   448,   449,   450,    -1,    -1,
     103,    -1,    -1,    -1,    -1,   108,    -1,   110,    -1,   112,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,    -1,
      -1,   134,    -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,
      -1,   164,    -1,   166,   167,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   177,   178,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     193,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    -1,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,
      -1,    -1,   435,   436,   437,   438,   439,    -1,    -1,    -1,
      -1,    -1,    -1,   446,   447,    -1,    -1,    12,   451,    -1,
      15,   454,    -1,    18,    -1,    -1,   459,   460,    23,    -1,
      -1,    -1,    27,    -1,    -1,    30,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
      -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
      -1,    -1,    -1,   108,    -1,   110,    -1,   112,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   130,   131,    -1,    -1,   134,
      -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     155,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,   164,
      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   177,   178,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    -1,   347,   348,   349,   350,   351,   352,   353,   354,
     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,   417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,
     435,   436,   437,   438,   439,    -1,    -1,    -1,    -1,    -1,
      -1,   446,   447,    -1,    -1,    12,   451,    -1,    15,   454,
      -1,    18,    -1,    -1,   459,   460,    23,    -1,    -1,    -1,
      27,    -1,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   176,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,
      -1,    -1,    -1,    -1,   191,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,   136,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,   172,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,   114,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,   458,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,   104,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   435,   436,
     437,   438,   439,    -1,    -1,    12,    -1,    -1,    15,   446,
     447,    18,    -1,    -1,   451,    -1,    23,   454,    -1,    -1,
      27,    -1,   459,    30,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
      -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
      -1,   108,    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   130,   131,    -1,    -1,   134,    -1,    -1,
     137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,    -1,
     157,    -1,    -1,    -1,    -1,    -1,    -1,   164,    -1,   166,
     167,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     177,   178,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   193,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
     417,    -1,    15,    -1,    -1,    18,    -1,    -1,    -1,    -1,
      23,    -1,   429,    -1,    27,    -1,    -1,    30,   435,   436,
     437,   438,   439,    -1,    -1,    -1,    -1,    -1,    -1,   446,
     447,    44,    -1,    46,   451,    -1,    -1,   454,    -1,    52,
      -1,    -1,   459,    -1,    -1,    -1,    59,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     103,    -1,    -1,    -1,    -1,   108,    -1,   110,    -1,   112,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,    -1,
      -1,   134,    -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   155,    -1,   157,    -1,    -1,    -1,    -1,    -1,
      -1,   164,    -1,   166,   167,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   177,   178,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     193,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    -1,   347,   348,   349,   350,   351,   352,
     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,   417,     7,     8,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   429,    -1,    20,    -1,
      -1,    -1,   435,   436,   437,   438,   439,    -1,    -1,    -1,
      -1,    -1,    -1,   446,   447,    -1,    -1,    -1,   451,    -1,
      -1,   454,    -1,    -1,    -1,    -1,   459,    -1,    -1,    -1,
      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    -1,   347,   348,   349,   350,   351,
     352,   353,   354,   355,    -1,    -1,     7,    -1,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    20,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,    -1,   388,   389,   390,   391,
      -1,    -1,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,    -1,   418,    68,     7,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    20,    -1,   435,    -1,    -1,    -1,   439,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,     7,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,
      -1,    -1,     7,     8,    20,   116,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,    68,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,
      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,   108,
      -1,    -1,   173,    68,    -1,    -1,    -1,   116,   179,   180,
     181,   182,   183,   184,   185,    -1,   187,   188,     7,   190,
      -1,   192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,
      -1,    20,   108,    -1,    -1,    -1,    68,    -1,    -1,    -1,
     116,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   116,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
     169,   232,    -1,    -1,   173,     7,    -1,    20,    -1,    -1,
      -1,    -1,    -1,   149,    -1,    -1,   108,    -1,    20,    68,
      -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   265,    -1,    -1,   173,    51,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,    -1,
      -1,   282,    -1,   284,    -1,    68,   287,    -1,    -1,   108,
      -1,    -1,    -1,    -1,    -1,    -1,    68,   116,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   309,    -1,
      -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   325,   108,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   116,    -1,    -1,   108,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   173,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   373,   374,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,    -1,    -1,
     421,   422,   423,   424,   425,   426,    -1,    -1,    -1,   430,
     431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   444,   445,   446,   447,   448,   449,   450,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
      -1,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,   418,    -1,    -1,   421,   422,   423,   424,   425,
     426,    -1,    -1,   418,   430,   431,   421,   422,   423,   424,
     425,   426,    -1,    -1,    -1,   430,   431,    -1,   444,   445,
     446,   447,   448,   449,   450,    -1,    22,    -1,    -1,   444,
     445,   446,   447,   448,   449,   450,   418,    -1,    -1,   421,
     422,   423,   424,   425,   426,    -1,    -1,    -1,   430,   431,
      -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   418,
     419,    -1,   421,   422,   423,   424,   425,   426,    -1,    -1,
      -1,   430,   431,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   444,   445,   446,   447,   448,
     449,   450,    -1,    -1,    -1,   418,    -1,    -1,   421,   422,
     423,   424,   425,   426,    -1,    -1,   418,   430,   431,   421,
     422,   423,   424,   425,   426,   131,    -1,    -1,   430,   431,
      -1,   444,   445,   446,   447,   448,   449,   450,    -1,    -1,
      -1,    -1,   444,   445,   446,   447,   448,   449,   450,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,
     196,    -1,   198,   199,   200,   201,   202,   203,   204,   205,
     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
     316,   317,   318,   319,    -1,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
      -1,   347,   348,   349,   350,   351,   352,   353,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,   365,
     366,   367,   368,   369,   370,    -1,   372,   373,   374,     8,
      -1,    -1,    -1,   379,   380,   381,   382,   383,   384,   385,
     386,    -1,   388,   389,   390,   391,    -1,    -1,   394,   395,
     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,    -1,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,
     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,    -1,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,    -1,   347,   348,
     349,   350,   351,   352,   353,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,    -1,   372,   373,   374,     8,    -1,    -1,    -1,
     379,   380,   381,   382,   383,   384,   385,   386,    -1,   388,
     389,   390,   391,    -1,    -1,   394,   395,   396,   397,   398,
     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,    -1,    -1,
      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,
     439,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    -1,   347,   348,   349,   350,   351,
     352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    -1,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,    -1,   388,   389,   390,   391,
      -1,    -1,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,    -1,    11,    12,    -1,    -1,
      -1,    17,    -1,    18,    -1,    -1,    -1,    -1,    24,    -1,
      -1,    30,    28,   435,    29,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    47,    -1,    -1,    -1,    52,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
      65,    66,    -1,    -1,    -1,    70,    71,    72,    73,    -1,
      75,    76,    77,    78,    79,    80,    -1,    82,    83,    84,
      85,    86,    87,    88,    -1,    91,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   106,    -1,    -1,    -1,    -1,    -1,    -1,   113,    -1,
     119,   120,    -1,    -1,    -1,    -1,   122,    -1,    -1,    -1,
      -1,   126,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   137,    -1,    -1,   140,    -1,    -1,    -1,   145,
      -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,    -1,    -1,
      -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   202,   203,   204,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   212,   217,    -1,
     216,    -1,    -1,    -1,   223,   221,    -1,    -1,    -1,   228,
     229,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   238,
     235,    -1,    -1,    -1,    -1,   244,    -1,   246,    -1,   248,
      -1,   247,    -1,    -1,   249,   251,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   262,   263,    -1,    -1,
      -1,   270,   268,    -1,    -1,   274,   275,    -1,   273,    -1,
      -1,    -1,    -1,    40,   280,    -1,    -1,    -1,    -1,   288,
      -1,    -1,    -1,    -1,   293,    52,    -1,    -1,    -1,    -1,
     295,    -1,    -1,    -1,    -1,    -1,   302,    -1,   304,    -1,
      -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   324,    -1,   326,    -1,    -1,
      -1,    -1,    -1,    -1,   330,    -1,    -1,    -1,    -1,    -1,
      -1,   340,   341,   342,    -1,    -1,    -1,   343,    -1,    -1,
      -1,   347,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     355,   356,   357,   358,   359,    -1,   362,    -1,    -1,    -1,
      -1,    -1,    -1,   369,   131,    -1,   372,    -1,    -1,    -1,
     375,   376,   377,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
     435,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      17,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    52,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,
      -1,    -1,    -1,    -1,   461,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    -1,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      17,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    52,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    26,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    52,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    -1,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    22,   347,   348,   349,   350,   351,   352,
     353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    52,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,    -1,   388,   389,   390,   391,    -1,
      -1,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   435,    -1,    -1,    -1,   439,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,
     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,    -1,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,    52,   347,   348,
     349,   350,   351,   352,   353,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,    -1,
     379,   380,   381,   382,   383,   384,   385,   386,    -1,   388,
     389,   390,   391,    -1,    -1,   394,   395,   396,   397,   398,
     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
      -1,   136,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   172,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    52,   347,   348,   349,   350,   351,   352,   353,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,    -1,   388,   389,   390,   391,    -1,    -1,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
      -1,    -1,    -1,    -1,    -1,    -1,   461,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,
     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,    -1,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,    52,   347,   348,   349,   350,
     351,   352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
      -1,   372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,
     381,   382,   383,   384,   385,   386,    -1,   388,   389,   390,
     391,    -1,    -1,   394,   395,   396,   397,   398,   399,   400,
     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
     411,   412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,    -1,    -1,
     461,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    52,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    -1,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   461,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    52,   347,   348,   349,   350,   351,   352,
     353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,    -1,   388,   389,   390,   391,    -1,
      -1,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   461,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,
     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,    -1,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,    52,   347,   348,
     349,   350,   351,   352,   353,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,    -1,
     379,   380,   381,   382,   383,   384,   385,   386,    -1,   388,
     389,   390,   391,    -1,    -1,   394,   395,   396,   397,   398,
     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
      -1,   136,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   456,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    52,   347,   348,   349,   350,   351,   352,   353,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,    -1,   388,   389,   390,   391,    -1,    -1,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,
     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,    -1,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,    52,   347,   348,   349,   350,
     351,   352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
      -1,   372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,
     381,   382,   383,   384,   385,   386,    -1,   388,   389,   390,
     391,    -1,    -1,   394,   395,   396,   397,   398,   399,   400,
     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
     411,   412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    52,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    -1,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    52,   347,   348,   349,   350,   351,   352,
     353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,    -1,   388,   389,   390,   391,    -1,
      -1,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   448,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,
     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,    -1,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,    52,   347,   348,
     349,   350,   351,   352,   353,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,    -1,
     379,   380,   381,   382,   383,   384,   385,   386,    -1,   388,
     389,   390,   391,    -1,    -1,   394,   395,   396,   397,   398,
     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    52,   347,   348,   349,   350,   351,   352,   353,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,    -1,   388,   389,   390,   391,    -1,    -1,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,
     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,    -1,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,    52,   347,   348,   349,   350,
     351,   352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
      -1,   372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,
     381,   382,   383,   384,   385,   386,    -1,   388,   389,   390,
     391,    -1,    -1,   394,   395,   396,   397,   398,   399,   400,
     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
     411,   412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,
      -1,   198,   199,   200,   201,   202,   203,   204,   205,   206,
     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
     317,   318,   319,    -1,   321,   322,   323,   324,   325,   326,
     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
     337,   338,   339,   340,   341,   342,   343,   344,   345,    52,
     347,   348,   349,   350,   351,   352,   353,   354,   355,    -1,
      -1,    -1,    -1,   360,   361,   362,   363,   364,   365,   366,
     367,   368,   369,   370,    -1,   372,   373,   374,    -1,    -1,
      -1,    -1,   379,   380,   381,   382,   383,   384,   385,   386,
      -1,   388,   389,   390,   391,    -1,    -1,   394,   395,   396,
     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
     407,   408,   409,   410,   411,   412,   413,   414,   415,   416,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   448,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   195,   196,    -1,   198,   199,   200,   201,   202,
     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
     313,   314,   315,   316,   317,   318,   319,    -1,   321,   322,
     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
     343,   344,   345,    52,   347,   348,   349,   350,   351,   352,
     353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,   362,
     363,   364,   365,   366,   367,   368,   369,   370,    -1,   372,
     373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,
     383,   384,   385,   386,    -1,   388,   389,   390,   391,    -1,
      -1,   394,   395,   396,   397,   398,   399,   400,   401,   402,
     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
     413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   435,    -1,    -1,    -1,   439,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,
     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
     209,   210,   211,   212,   213,   214,   215,   216,   217,   218,
     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
     319,    -1,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,    52,   347,   348,
     349,   350,   351,   352,   353,   354,   355,    -1,    -1,    -1,
      -1,   360,   361,   362,   363,   364,   365,   366,   367,   368,
     369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,    -1,
     379,   380,   381,   382,   383,   384,   385,   386,    -1,   388,
     389,   390,   391,    -1,    -1,   394,   395,   396,   397,   398,
     399,   400,   401,   402,   403,   404,   405,   406,   407,   408,
     409,   410,   411,   412,   413,   414,   415,   416,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,
     439,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     195,   196,    -1,   198,   199,   200,   201,   202,   203,   204,
     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,    -1,   321,   322,   323,   324,
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
     345,    52,   347,   348,   349,   350,   351,   352,   353,   354,
     355,    -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,
     365,   366,   367,   368,   369,   370,    -1,   372,   373,   374,
      -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,   384,
     385,   386,    -1,   388,   389,   390,   391,    -1,    -1,   394,
     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
     415,   416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     435,    -1,    -1,    -1,   439,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,
     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
     311,   312,   313,   314,   315,   316,   317,   318,   319,    -1,
     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
     331,   332,   333,   334,   335,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,    -1,   347,   348,   349,   350,
     351,   352,   353,   354,   355,    51,    52,    -1,    -1,   360,
     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
      -1,   372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,
     381,   382,   383,   384,   385,   386,    -1,   388,   389,   390,
     391,    -1,    -1,   394,   395,   396,   397,   398,   399,   400,
     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
     411,   412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   435,   131,    -1,    -1,   439,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,
     196,    -1,   198,   199,   200,   201,   202,   203,   204,   205,
     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
     316,   317,   318,   319,    -1,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
      52,   347,   348,   349,   350,   351,   352,   353,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,   365,
     366,   367,   368,   369,   370,    -1,   372,   373,   374,    -1,
      -1,    -1,    -1,   379,   380,   381,   382,   383,   384,   385,
     386,    -1,   388,   389,   390,   391,    -1,    -1,   394,   395,
     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,
      -1,    -1,    -1,   145,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    52,   347,   348,   349,   350,   351,
     352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    -1,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,    -1,   388,   389,   390,   391,
      -1,    -1,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   189,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,
     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,    -1,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   343,   344,   345,    52,   347,
     348,   349,   350,   351,   352,   353,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,   362,   363,   364,   365,   366,   367,
     368,   369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,
      -1,   379,   380,   381,   382,   383,   384,   385,   386,    -1,
     388,   389,   390,   391,    -1,    -1,   394,   395,   396,   397,
     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   195,   196,    -1,   198,   199,   200,   201,   202,   203,
     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
     314,   315,   316,   317,   318,   319,    -1,   321,   322,   323,
     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
     344,   345,    52,   347,   348,   349,   350,   351,   352,   353,
     354,   355,    -1,    -1,    -1,    -1,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,    -1,   372,   373,
     374,    -1,    -1,    -1,    -1,   379,   380,   381,   382,   383,
     384,   385,   386,    -1,   388,   389,   390,   391,    -1,    -1,
     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     414,   415,   416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,
     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
     230,   231,   232,   233,   234,   235,   236,   237,   238,   239,
     240,   241,   242,   243,   244,   245,   246,   247,   248,   249,
     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
     270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
     280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
      -1,   321,   322,   323,   324,   325,   326,   327,   328,   329,
     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
     340,   341,   342,   343,   344,   345,    52,   347,   348,   349,
     350,   351,   352,   353,   354,   355,    -1,    -1,    -1,    -1,
     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
     370,    -1,   372,   373,   374,    -1,    -1,    -1,    -1,   379,
     380,   381,   382,   383,   384,   385,   386,    -1,   388,   389,
     390,   391,    -1,    -1,   394,   395,   396,   397,   398,   399,
     400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
     410,   411,   412,   413,   414,   415,   416,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,
     196,    -1,   198,   199,   200,   201,   202,   203,   204,   205,
     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
     236,   237,   238,   239,   240,   241,   242,   243,   244,   245,
     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
     276,   277,   278,   279,   280,   281,   282,   283,   284,   285,
     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
     316,   317,   318,   319,    -1,   321,   322,   323,   324,   325,
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
     336,   337,   338,   339,   340,   341,   342,   343,   344,   345,
      52,   347,   348,   349,   350,   351,   352,   353,   354,   355,
      -1,    -1,    -1,    -1,   360,   361,   362,   363,   364,   365,
     366,   367,   368,   369,   370,    -1,   372,   373,   374,    -1,
      -1,    -1,    -1,   379,   380,   381,   382,   383,   384,   385,
     386,    -1,   388,   389,   390,   391,    -1,    -1,   394,   395,
     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
     416,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   435,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   195,   196,    -1,   198,   199,   200,   201,
     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     312,   313,   314,   315,   316,   317,   318,   319,    -1,   321,
     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
     342,   343,   344,   345,    52,   347,   348,   349,   350,   351,
     352,   353,   354,   355,    -1,    -1,    -1,    -1,   360,   361,
     362,   363,   364,   365,   366,   367,   368,   369,   370,    -1,
     372,   373,   374,    -1,    -1,    -1,    -1,   379,   380,   381,
     382,   383,   384,   385,   386,    -1,   388,   389,   390,   391,
      -1,    -1,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,   196,    -1,
     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,    -1,   321,   322,   323,   324,   325,   326,   327,
     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
     338,   339,   340,   341,   342,   343,   344,   345,    -1,   347,
     348,   349,   350,   351,   352,   353,   354,   355,    -1,    -1,
      -1,    -1,   360,   361,   362,   363,   364,   365,   366,   367,
     368,   369,   370,    -1,   372,   373,   374,    -1,    -1,    -1,
      -1,   379,   380,   381,   382,   383,   384,   385,   386,    -1,
     388,   389,   390,   391,    -1,    -1,   394,   395,   396,   397,
     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
     408,   409,   410,   411,   412,   413,   414,   415,   416,     3,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    16,    -1,    -1,    -1,    -1,   435,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    30,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   202,   203,
     204,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,    -1,   223,
      -1,    -1,    -1,    -1,   228,   229,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   238,    -1,    -1,    -1,    -1,    -1,
     244,    -1,   246,    -1,   248,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   270,    -1,    -1,    -1,
     274,   275,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   286,    -1,   288,    -1,    -1,    -1,    -1,   293,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     314,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     324,    -1,   326,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   340,   341,   342,    -1,
      -1,    -1,   346
};

  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     symbol of state STATE-NUM.  */
static const yytype_int16 yystos[] =
{
       0,     5,    11,    12,    18,    24,    29,    32,    33,    34,
      38,    39,    45,    47,    55,    65,    66,    69,    70,    71,
      72,    73,    75,    76,    77,    78,    79,    80,    82,    83,
      84,    85,    86,    87,    88,    92,    98,   106,   113,   126,
     130,   133,   136,   137,   138,   139,   140,   151,   157,   160,
     172,   207,   212,   235,   236,   249,   254,   273,   295,   303,
     314,   355,   356,   357,   358,   359,   363,   375,   376,   377,
     435,   454,   466,   467,   468,   469,   501,   502,   503,   538,
     539,   540,   541,   552,   553,   554,   599,   645,   649,   650,
     654,   657,   658,   659,   665,   667,   668,   669,   670,   677,
     686,   692,   693,   694,   696,   697,   698,   699,   700,   714,
     715,   716,   721,   722,   723,   731,   732,   739,   743,   744,
     745,   746,   747,   750,   751,   752,   778,    60,   109,   366,
     370,   471,   454,   753,   753,   753,    27,    62,    90,   109,
     116,   145,   156,   194,   366,   517,   646,   753,    31,    58,
     102,   470,   121,   753,    27,    62,   109,   145,   303,   348,
     366,   370,   655,   753,     4,     5,    24,    32,    39,    55,
      62,    69,    99,   127,   136,   139,   154,   160,   161,   250,
     254,   259,   305,   308,   316,   318,   338,   344,   733,   734,
     735,   232,   265,   281,   282,   283,   284,   325,   749,   753,
     281,   282,   283,   325,   748,   753,   470,   753,   753,   753,
     753,   753,   753,   753,   753,   753,   753,   753,   753,   753,
     753,   753,   753,   753,   229,   310,   438,   233,   753,   753,
     753,   470,   733,   115,   653,   454,   137,    17,    24,    28,
      52,    62,    91,   122,   145,   216,   221,   247,   251,   262,
     263,   268,   280,   302,   304,   307,   330,   347,   362,   372,
     628,   678,   680,   682,   683,   753,   753,   454,   470,   653,
     224,   319,   339,   749,   753,   303,    52,   131,   195,   196,
     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
     318,   319,   321,   322,   323,   324,   325,   326,   327,   328,
     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
     339,   340,   341,   342,   343,   344,   345,   347,   348,   349,
     350,   351,   352,   353,   354,   355,   360,   361,   362,   363,
     364,   365,   366,   367,   368,   369,   370,   372,   373,   374,
     379,   380,   381,   382,   383,   384,   385,   386,   388,   389,
     390,   391,   394,   395,   396,   397,   398,   399,   400,   401,
     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
     412,   413,   414,   415,   416,   435,   498,   579,   579,   753,
      12,    18,   579,   655,   748,   753,   454,   454,   454,   454,
     145,   495,   579,   753,   753,   753,   541,     0,   457,    51,
     117,   530,   531,   543,    96,   526,   530,   157,   541,   552,
     261,   468,   469,   501,   503,   541,   552,   700,   713,   738,
     753,    59,   601,   601,   495,   499,   145,   438,   439,   754,
     755,   756,   757,   159,   628,   777,   777,    59,   600,   600,
     130,   600,   517,   518,   600,   600,   277,   347,   618,   619,
     370,   312,   473,   753,   601,   579,   620,   601,   579,   601,
     601,   601,   304,   321,   321,   349,   350,   366,   370,   115,
     348,    28,   370,   219,   334,   114,   456,   753,   753,   471,
     159,   438,   438,   277,   701,   159,    67,   474,   114,   454,
       4,    35,    36,   537,   574,   575,   576,   739,   216,   277,
     330,   347,   361,   579,   628,   671,   672,   673,   137,    27,
     145,   370,   343,   343,    51,    61,   679,   684,   343,   343,
     684,   679,    94,   170,   681,   343,   369,   222,   255,   306,
     348,   159,   159,   579,   740,   741,   471,   579,   651,   652,
     208,   666,   666,   125,   666,   753,   579,   461,   453,   163,
     753,   753,    51,   495,   500,   753,   739,   739,   742,   741,
     439,   495,   120,   508,   453,   458,   467,    40,   454,   461,
     495,   504,   505,   506,   507,   522,    13,   526,   170,   527,
     528,    15,    18,    23,    27,    30,    44,    46,    59,    69,
      93,   103,   108,   110,   112,   130,   134,   137,   155,   157,
     164,   166,   167,   177,   178,   193,   201,   205,   232,   234,
     249,   261,   265,   273,   282,   284,   287,   309,   322,   325,
     354,   355,   356,   357,   358,   359,   366,   373,   374,   379,
     380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
     390,   391,   392,   393,   394,   395,   396,   397,   398,   399,
     400,   405,   406,   407,   408,   409,   410,   411,   412,   413,
     417,   429,   435,   436,   437,   438,   439,   446,   447,   451,
     454,   459,   483,   489,   496,   551,   557,   558,   559,   561,
     562,   563,   567,   568,   569,   570,   571,   572,   579,   580,
     581,   582,   612,    48,    99,   542,   526,   555,   575,   577,
     418,   459,    44,   579,   717,    26,   439,   579,   724,   725,
     726,   776,   454,   647,   495,   458,   456,   776,    20,   775,
     775,   110,   579,   660,   717,   495,   619,    27,   109,   145,
     347,   779,   724,   620,   499,   471,   660,   114,   717,   724,
     499,   500,   348,   448,   579,   736,   734,   131,   472,    63,
     495,   736,   439,    12,   448,   461,   483,   547,   548,   556,
     579,   582,   588,   590,   591,   470,   458,   579,   361,   579,
     361,   579,   267,   674,   675,   579,   456,   418,   420,   660,
     495,   499,   684,   660,   495,   579,   582,   556,   679,   685,
     685,   684,   739,   456,   458,   504,   506,   653,   456,   299,
     439,   579,   770,   772,   773,   774,   579,   330,   347,   673,
     695,   777,   777,   439,   673,   456,   456,   456,   458,   458,
     458,   508,   454,   579,   454,   504,   541,   552,   650,   579,
     508,   456,   528,    25,    52,    64,    89,    93,   134,   144,
     175,   523,   525,   534,   535,   556,   542,   556,   169,   556,
     584,   585,   586,   454,   454,   454,   454,   454,   551,   454,
     454,   454,   454,   454,   582,   454,   454,   461,   461,   454,
     439,   439,   459,   454,   454,   497,   498,   454,   459,   461,
     454,   454,   454,   454,   454,   454,   454,   461,   461,   461,
     498,   439,   454,   454,   454,   454,   454,   454,   454,   454,
     454,   454,   454,   454,   454,   454,   454,   454,   454,   454,
     454,   454,   454,   454,   582,   454,   582,   582,   582,   454,
     484,   541,   551,   552,   556,   650,   556,   767,   768,   769,
     459,   490,   491,   492,   490,   454,   454,   454,   454,   454,
     454,   453,   298,   456,   454,   160,    61,   542,   454,   538,
     540,   541,   554,   439,   438,   460,   579,   718,   719,   720,
     454,   727,   109,   456,   730,   266,   728,   464,   485,   488,
     496,     8,     3,    16,    30,    39,   119,   120,   129,   202,
     203,   204,   217,   223,   228,   229,   238,   244,   246,   248,
     270,   274,   275,   286,   288,   293,   314,   324,   326,   340,
     341,   342,   346,   614,   630,   631,   642,   687,   691,   757,
     776,    44,   223,   614,   662,   663,   664,   719,   454,   620,
     498,   730,   163,   626,   627,   647,    51,   500,   495,    14,
     132,   656,   656,   453,   453,   153,   474,   439,   508,    51,
     458,   556,   579,    61,   110,   593,   456,     7,     8,    20,
      68,   108,   116,   173,   418,   421,   422,   423,   424,   425,
     426,   430,   431,   439,   444,   445,   446,   447,   448,   449,
     450,   549,   550,   579,   589,   592,   453,    10,    94,    95,
     110,   128,   135,   593,   595,   597,   598,   144,   546,   738,
     674,   674,   279,   456,   672,    30,   114,   556,   556,   679,
     495,   684,   684,   740,   738,   137,   137,   486,   487,   489,
     652,   666,   418,   771,   456,   462,   453,   456,   775,   775,
     495,   739,   739,   738,   738,   738,   509,   579,   453,   541,
     458,   458,   458,   541,   552,   506,     8,   510,   511,   579,
     505,    56,   532,   533,    89,    89,   506,    64,    89,   523,
     118,   524,   506,   456,     9,    33,   536,   556,   584,   245,
      41,   586,   587,   484,   556,   556,   458,   489,   454,   551,
     556,   556,   556,   487,   556,   556,   556,   769,   762,   763,
     770,   489,   769,   556,   574,   576,   578,   461,   556,   769,
     762,   764,   765,   766,   556,   556,   556,   484,   556,   556,
     484,   461,   556,   758,   759,   760,   761,   769,   766,   461,
     461,   458,   556,     4,   556,     4,   556,     4,   556,   556,
       4,   448,   556,   574,   179,   180,   181,   182,   183,   184,
     185,   187,   188,   190,   192,   232,   265,   282,   284,   287,
     309,   325,   373,   374,   565,   578,   578,   578,   438,   458,
     438,   458,   556,   458,   232,   265,   282,   284,   287,   309,
     325,   373,   374,   564,   564,   578,   438,   560,   458,   176,
     186,   191,   556,   566,   556,   458,   484,   541,   456,   458,
     458,   458,   458,   541,   552,   456,   460,   419,   556,   492,
     556,   556,   556,   560,   458,   556,   579,   582,   582,   438,
     458,   331,   541,   530,   530,   713,   460,   418,   644,   456,
     718,   458,   717,   725,    13,   776,   458,   456,   541,   552,
     648,    21,    22,   120,   168,   378,   616,   635,   688,    21,
     688,   120,   168,   378,   517,   688,   644,    13,     8,    21,
     153,   689,   644,   644,   644,   644,   644,   644,   644,   644,
     644,   644,   644,   644,   644,   644,    21,   120,   688,   644,
     644,   517,   644,   644,   644,   644,   644,   689,    20,   628,
     456,   631,   456,   644,    20,   628,   662,   496,   602,   603,
     604,   605,   615,   616,   627,     8,    51,   213,   264,   114,
       8,   495,    51,    49,   513,   448,   448,   579,   724,   495,
      60,   130,   703,   137,   164,   368,   454,   475,   476,   541,
     552,   724,   556,    61,   454,   551,   548,   556,   439,   579,
     776,   110,   556,   556,   556,   556,   556,   556,   556,   556,
      65,   556,    65,   556,   556,   556,   556,     4,   200,   345,
     556,   594,    46,   112,   155,   365,   448,   579,   582,    10,
      94,   128,   135,   454,   551,   582,   582,   582,   336,   337,
     545,   125,   317,   329,   676,   675,   579,   739,   478,   479,
     496,   478,     8,   456,   438,   772,   579,   673,   458,   456,
     458,   579,   458,   511,   511,   458,   458,   462,   579,    49,
      60,   162,   512,   514,   515,   516,    13,    57,   529,   114,
      89,   506,   524,    89,   114,   163,   535,   149,   245,   556,
     456,   458,   456,   458,   456,   456,   456,   458,   456,   456,
     456,   462,   462,   419,   458,   460,   458,     4,   556,   438,
     439,   456,   460,   456,   462,   458,   458,   458,   456,   458,
     458,   458,   556,   419,   456,   462,   462,   462,   439,   556,
     579,   761,   766,   769,   766,   456,   458,   556,   458,   556,
     458,   556,   458,     8,   556,   458,   458,   484,    51,   484,
     556,   556,   458,   458,    61,   456,   456,   556,   458,    51,
     458,    51,   556,   458,   458,   458,   556,   490,   458,   458,
     556,   460,   556,   419,   460,   456,   456,    51,   456,   458,
     458,   453,   458,   285,   458,   526,   526,   556,   718,   439,
     729,   496,   156,   579,   579,   616,   579,   661,    19,    53,
     156,   189,   320,   371,   517,   617,   454,   605,   579,   579,
     517,   661,   620,   579,    30,   580,   124,   264,   643,   579,
     495,   438,   580,   438,   580,   439,   439,   439,   580,   439,
     776,   439,   256,   257,   296,   638,   438,   439,   137,   579,
     605,   580,   580,   620,    30,   226,   227,   242,   258,   315,
     639,   439,    30,   580,    30,   580,   580,   495,   644,   644,
     631,   691,   439,   644,   644,   739,   458,   456,   617,   114,
     739,   273,   359,   495,   648,   508,   504,    99,   199,   622,
     623,   624,   172,   737,   508,    67,   478,   485,   541,   552,
     454,   481,   730,   462,   322,   454,   482,   483,   556,   556,
     551,   453,   463,   596,   484,   596,     7,   142,   544,   225,
     364,   125,   456,   528,   418,   420,   480,   528,   551,   489,
     453,   738,   579,   511,   511,   517,   517,   517,   515,    48,
     519,   534,   556,   556,   506,    89,   506,   556,   454,   556,
     556,    12,    29,   159,   234,   235,   333,   354,   556,   556,
     556,   197,   556,   556,   556,   556,   458,   462,   462,   556,
     762,   556,   419,   556,   758,   462,   462,   462,   462,   556,
     458,   458,   458,    12,    29,   159,   234,   235,   333,   354,
     458,   458,   556,   530,   458,   458,   556,   556,   556,   458,
     556,   556,    51,   458,   460,   460,   556,    65,   556,    65,
     556,   556,   579,   530,   542,   542,   605,   164,   617,   454,
     518,   518,    90,   518,   518,   277,   347,   618,   620,   605,
     606,   196,   256,   690,   605,   620,   513,   454,   454,   153,
     478,   223,   632,   633,   634,   690,   776,   776,   776,   776,
      19,    20,    30,   110,   112,   114,   156,   189,   202,   223,
     607,   608,   613,   629,   630,   604,   495,   439,   439,   454,
     528,   528,   644,   644,    55,   730,   475,   145,   458,   458,
     458,   484,   456,   549,   456,   458,   565,   565,   448,   579,
     439,   458,   582,   479,   556,   530,   579,    56,    89,   117,
     454,   506,   114,   163,   487,   458,   458,    70,   458,   458,
     458,    70,   458,   458,   456,   456,   458,   454,   458,   456,
     458,   458,   458,   556,   458,   458,   458,    70,   458,   458,
     458,    70,   458,   458,   458,   328,   573,   458,   456,   456,
     458,   458,   556,   419,   460,   556,   458,   556,    48,   458,
     456,   458,   453,   526,   690,   278,   459,   556,   620,   618,
     620,   627,   620,   620,   620,   627,   456,   458,   489,   690,
     556,   556,   496,   528,   644,   632,   454,   776,   397,   446,
     447,   581,   609,   610,   611,   612,   112,   160,    90,   439,
     608,    90,   454,   493,   494,   496,   530,    30,   253,   297,
     332,   439,   641,    30,   231,   269,   271,   439,   640,   115,
     114,   477,   495,   454,   476,   541,   552,   458,   454,   454,
     483,   453,   526,    13,    13,   189,   520,   521,   579,   556,
     454,   458,   458,   458,   556,   556,   582,   556,   462,   458,
     458,   439,   458,   556,   556,   458,   556,   565,   565,   556,
     556,   579,   542,   353,   556,   458,   454,   620,   627,   454,
     454,   454,   627,   454,   605,   458,   458,   439,   556,   454,
     580,   580,   454,   611,   494,   536,   456,   458,   454,   526,
     241,   777,   541,   481,   484,   448,   456,   458,   487,   458,
     456,    61,   583,   458,   458,   458,   460,   458,   458,   458,
     458,   104,   454,   456,   494,   627,   454,   494,   488,   488,
     454,   494,   454,   301,   458,   458,   580,   458,   580,   458,
     493,   621,   438,    90,   222,   255,   704,   705,   458,   458,
     521,   458,   556,   175,   211,   371,   458,   634,   556,   104,
     556,   458,   454,   494,   458,   458,   458,   494,   458,   635,
     636,   637,   438,   458,   458,   621,   223,   274,   622,   623,
     625,   626,   458,   160,    97,   708,    42,    43,   147,   148,
     706,   707,   458,   276,   285,   285,   458,   458,   458,   621,
     494,   458,   621,   621,   621,   458,   621,   456,   458,   439,
     644,   478,   143,   709,    60,   702,    13,    13,    13,    42,
     707,   285,   634,   634,   634,   458,   621,   621,   635,   438,
      13,   147,   710,   438,   454,   711,   439,   439,   439,    13,
     621,   439,    13,    97,   485,   137,   712,   439,   439,   458,
     478
};

  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
static const yytype_int16 yyr1[] =
{
       0,   465,   466,   466,   466,   467,   467,   467,   467,   467,
     467,   467,   467,   467,   467,   467,   467,   467,   467,   467,
     467,   467,   467,   467,   467,   467,   467,   467,   467,   467,
     467,   467,   467,   467,   467,   467,   467,   467,   467,   467,
     467,   467,   467,   468,   469,   470,   470,   470,   470,   471,
     471,   472,   472,   473,   473,   474,   474,   475,   475,   475,
     475,   475,   475,   475,   475,   475,   475,   476,   476,   477,
     477,   478,   478,   479,   480,   480,   481,   481,   482,   482,
     483,   483,   484,   484,   485,   485,   486,   486,   487,   487,
     488,   488,   489,   490,   490,   491,   491,   492,   492,   492,
     492,   492,   492,   493,   493,   493,   494,   494,   495,   495,
     495,   496,   496,   496,   496,   497,   497,   498,   498,   498,
     498,   499,   500,   500,   501,   501,   502,   502,   503,   503,
     504,   504,   505,   505,   506,   506,   507,   507,   507,   507,
     507,   507,   508,   508,   509,   509,   510,   510,   511,   511,
     512,   512,   513,   513,   514,   514,   515,   516,   516,   516,
     517,   517,   518,   518,   519,   519,   519,   519,   520,   520,
     520,   521,   521,   522,   522,   522,   522,   522,   522,   522,
     522,   522,   522,   523,   523,   523,   524,   524,   525,   525,
     525,   526,   526,   526,   526,   527,   528,   528,   529,   529,
     530,   530,   531,   532,   532,   533,   534,   534,   535,   536,
     536,   536,   537,   538,   539,   540,   541,   541,   541,   542,
     542,   542,   543,   544,   544,   545,   545,   545,   546,   546,
     547,   547,   548,   548,   548,   548,   548,   548,   549,   549,
     550,   550,   550,   550,   551,   551,   551,   551,   551,   552,
     552,   552,   553,   553,   554,   554,   555,   556,   556,   556,
     557,   557,   557,   557,   558,   558,   558,   558,   558,   558,
     558,   558,   558,   558,   558,   558,   558,   558,   558,   559,
     559,   559,   560,   560,   561,   561,   562,   562,   563,   563,
     563,   564,   564,   564,   564,   564,   564,   564,   564,   564,
     565,   565,   565,   565,   565,   565,   565,   565,   565,   565,
     565,   565,   565,   565,   565,   565,   565,   565,   565,   565,
     566,   566,   566,   567,   567,   568,   568,   569,   569,   569,
     569,   569,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   570,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   570,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   570,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   570,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   570,   570,   570,   570,   570,   570,   570,   570,   570,
     570,   571,   571,   571,   571,   571,   571,   571,   571,   571,
     571,   572,   572,   572,   572,   572,   572,   572,   572,   572,
     572,   572,   572,   572,   572,   572,   572,   573,   573,   574,
     574,   575,   575,   576,   576,   577,   577,   578,   578,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   579,
     579,   579,   579,   579,   579,   579,   579,   579,   579,   580,
     580,   581,   581,   581,   581,   581,   581,   581,   582,   582,
     582,   582,   582,   582,   582,   582,   582,   582,   582,   582,
     582,   582,   582,   582,   583,   583,   583,   583,   584,   585,
     585,   586,   587,   587,   588,   588,   588,   588,   588,   588,
     588,   588,   588,   588,   588,   588,   588,   588,   588,   588,
     588,   588,   588,   588,   589,   589,   589,   589,   589,   589,
     590,   591,   591,   591,   591,   591,   591,   591,   591,   591,
     591,   591,   591,   592,   592,   593,   593,   594,   594,   594,
     595,   595,   596,   596,   597,   597,   597,   597,   598,   598,
     599,   600,   600,   601,   601,   602,   602,   603,   603,   604,
     604,   605,   606,   606,   607,   607,   607,   608,   608,   608,
     608,   608,   608,   608,   608,   608,   608,   608,   609,   609,
     609,   610,   610,   611,   611,   611,   611,   611,   612,   612,
     612,   613,   613,   614,   614,   615,   616,   616,   616,   617,
     617,   617,   617,   617,   617,   617,   617,   617,   618,   618,
     619,   619,   620,   621,   621,   622,   623,   624,   624,   624,
     625,   625,   625,   625,   625,   626,   626,   627,   627,   628,
     628,   629,   629,   630,   630,   630,   631,   631,   631,   631,
     631,   631,   631,   631,   631,   631,   632,   633,   633,   634,
     634,   635,   635,   635,   635,   636,   636,   637,   637,   638,
     638,   638,   639,   639,   639,   639,   639,   639,   640,   640,
     640,   640,   640,   641,   641,   641,   641,   641,   642,   642,
     642,   642,   642,   642,   642,   642,   642,   642,   642,   642,
     642,   642,   642,   642,   642,   642,   642,   643,   643,   644,
     644,   645,   646,   646,   647,   647,   648,   648,   649,   649,
     650,   651,   651,   652,   653,   653,   654,   655,   655,   656,
     656,   656,   657,   658,   659,   660,   661,   662,   662,   662,
     663,   663,   664,   664,   665,   666,   666,   667,   667,   668,
     669,   670,   670,   670,   670,   671,   671,   672,   672,   672,
     672,   672,   673,   673,   673,   673,   674,   674,   675,   676,
     676,   676,   676,   677,   677,   677,   677,   677,   677,   677,
     677,   677,   678,   678,   678,   679,   679,   680,   680,   680,
     680,   680,   680,   680,   680,   680,   680,   680,   680,   680,
     680,   680,   680,   680,   680,   681,   681,   681,   682,   682,
     682,   683,   683,   684,   684,   685,   686,   686,   686,   686,
     687,   687,   688,   688,   689,   689,   689,   690,   690,   690,
     691,   691,   691,   691,   691,   691,   691,   691,   691,   691,
     691,   691,   691,   691,   691,   691,   691,   691,   691,   691,
     691,   692,   693,   693,   694,   694,   695,   695,   696,   696,
     697,   697,   697,   698,   698,   699,   699,   699,   700,   701,
     701,   702,   702,   703,   703,   703,   704,   704,   705,   705,
     706,   706,   707,   707,   707,   707,   708,   708,   709,   709,
     710,   710,   711,   711,   712,   712,   713,   713,   713,   713,
     713,   713,   713,   714,   715,   716,   717,   718,   719,   719,
     720,   720,   720,   721,   722,   723,   724,   724,   725,   726,
     726,   726,   727,   727,   728,   728,   729,   730,   730,   731,
     732,   733,   733,   734,   735,   735,   735,   735,   735,   735,
     735,   735,   735,   735,   735,   735,   735,   735,   735,   735,
     735,   735,   735,   735,   735,   735,   735,   735,   735,   735,
     735,   735,   735,   735,   735,   735,   735,   736,   736,   736,
     736,   736,   737,   737,   738,   738,   738,   739,   739,   739,
     739,   739,   739,   739,   739,   740,   741,   741,   742,   742,
     743,   743,   743,   743,   744,   744,   744,   744,   744,   745,
     745,   745,   745,   745,   745,   745,   745,   746,   746,   746,
     746,   746,   746,   746,   746,   746,   746,   746,   746,   746,
     746,   746,   746,   746,   746,   746,   746,   746,   746,   747,
     747,   747,   747,   747,   747,   747,   747,   748,   748,   748,
     748,   749,   749,   749,   749,   749,   749,   749,   750,   750,
     750,   750,   750,   750,   750,   750,   751,   752,   753,   753,
     754,   754,   755,   755,   756,   756,   757,   757,   758,   758,
     759,   759,   760,   760,   761,   761,   762,   763,   763,   764,
     764,   765,   765,   766,   766,   767,   767,   768,   768,   769,
     769,   770,   770,   771,   771,   772,   773,   773,   774,   774,
     775,   775,   776,   776,   777,   777,   778,   778,   778,   779,
     779,   779,   779,   779
};

  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
static const yytype_int8 yyr2[] =
{
       0,     2,     1,     3,     2,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     9,     6,     0,     1,     1,     1,     0,
       1,     0,     1,     0,     1,     0,     1,     5,     4,     6,
       4,     3,     1,     3,     1,     2,     2,     1,     1,     0,
       5,     1,     3,     3,     1,     1,     3,     5,     1,     3,
       5,     6,     1,     3,     0,     1,     0,     1,     1,     3,
       1,     3,     1,     0,     1,     1,     2,     3,     4,     4,
       3,     5,     7,     1,     4,     2,     1,     3,     1,     3,
       5,     1,     3,     5,     7,     0,     1,     1,     3,     5,
       7,     1,     1,     3,     9,     7,     4,     3,    10,     8,
       1,     3,     1,     4,     1,     1,     4,     4,     4,     5,
       5,     3,     0,     4,     1,     3,     0,     1,     1,     2,
       0,     1,     0,     1,     1,     2,     5,     2,     2,     2,
       1,     1,     0,     1,     0,     2,     3,     3,     0,     1,
       3,     1,     1,     3,     5,     7,     7,     9,     3,     5,
       4,     5,     6,     1,     1,     1,     0,     1,     1,     2,
       2,     0,     2,     4,     4,     2,     0,     1,     0,     2,
       0,     1,     3,     0,     1,     3,     1,     3,     2,     0,
       1,     1,     5,     4,     3,     6,     4,     3,     4,     0,
       2,     4,     2,     0,     1,     0,     1,     1,     0,     1,
       1,     3,     1,     3,     5,     7,     2,     5,     0,     1,
       1,     2,     1,     2,     3,     3,     3,     4,     4,     7,
       7,     9,     1,     4,     1,     3,     1,     1,     1,     1,
       1,     1,     3,     4,     5,     5,     5,     4,     4,     4,
       4,     3,     4,     4,     4,     4,     5,     5,     5,     1,
       1,     1,     0,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     4,     1,     3,     1,     4,     6,     4,     4,
       4,     4,     4,     4,     4,     3,     4,     3,     4,     4,
       6,     8,     8,     6,     6,     6,     6,     6,     6,     7,
       6,     7,     6,     7,     6,     7,     6,     6,     6,     6,
       6,     3,     3,     3,     6,     6,     6,     6,     8,     8,
       8,     8,     4,     6,     6,     7,     6,     6,    10,     4,
       4,     4,     6,     6,     8,     8,     3,     4,     1,     3,
       4,     5,     4,     5,     4,     5,     4,     5,     5,     5,
       4,     4,     5,     5,     5,     7,     4,     0,     2,     1,
       1,     1,     1,     0,     1,     0,     1,     1,     2,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     2,     2,     1,     1,
       2,     1,     2,     1,     2,     2,     2,     2,     2,     9,
       2,     4,     4,     3,     0,     4,     3,     3,     2,     1,
       2,     4,     0,     2,     1,     3,     3,     5,     5,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     2,     3,     1,     1,     1,     1,     1,     1,
       4,     3,     3,     3,     3,     5,     5,     3,     3,     4,
       4,     3,     5,     1,     2,     1,     2,     1,     1,     1,
       1,     2,     0,     2,     1,     1,     2,     2,     1,     2,
       8,     0,     3,     0,     2,     0,     1,     1,     3,     1,
       1,     3,     1,     3,     0,     1,     2,     2,     1,     1,
       2,     1,     2,     2,     4,     3,     2,     2,     1,     2,
       2,     1,     1,     3,     4,     1,     3,     4,     1,     1,
       1,     0,     1,     0,     1,     2,     0,     1,     2,     7,
       7,     7,     7,     8,     8,     9,     7,     4,     1,     1,
       0,     1,     1,     0,     2,     3,     3,     0,     1,     1,
       3,     1,     2,     1,     1,     2,     2,     0,     1,     2,
       1,     0,     1,     1,     2,     3,     3,     4,     4,     3,
       3,     3,     3,     3,     3,     1,     3,     1,     2,     0,
       1,     9,     7,     9,     9,     1,     3,     0,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
       3,     3,     3,     3,     3,     3,     3,     7,     6,     0,
       1,     7,     0,     2,     0,     3,     1,     1,     2,     2,
       3,     3,     1,     5,     0,     4,     5,     1,     1,     0,
       1,     1,     5,     3,     5,     1,     1,     4,     4,     3,
       0,     1,     1,     2,     4,     0,     1,     5,     3,     3,
       3,     3,     5,     5,     4,     1,     3,     3,     3,     3,
       3,     2,     1,     2,     2,     2,     1,     3,     3,     2,
       2,     2,     1,     3,     4,     4,     4,     2,     3,     3,
       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
       3,     3,     3,     5,     4,     4,     1,     2,     2,     1,
       2,     2,     2,     2,     1,     0,     2,     2,     0,     1,
       1,     0,     1,     0,     2,     2,     5,    11,    12,     7,
       1,     3,     0,     1,     0,     1,     1,     0,     1,     2,
       1,     4,     5,     5,     3,     5,     3,     3,     3,     4,
       4,     4,     3,     3,     3,     5,     4,     2,     3,     4,
       5,     6,     4,     4,     2,     4,     1,     3,     3,     3,
       1,     1,     1,     2,     5,     2,     3,     3,    15,     0,
       1,     0,     3,     0,     1,     1,     0,     2,     1,     1,
       1,     2,     3,     4,     3,     3,     0,     3,     0,     3,
       0,     3,     0,     3,     0,     2,     1,     1,     1,     1,
       1,     1,     1,     5,     4,     5,     1,     3,     0,     1,
       1,     2,     3,     5,     4,     5,     1,     3,     2,     1,
       3,     2,     0,     2,     0,     3,     1,     0,     2,     8,
       7,     1,     3,     1,     1,     2,     1,     2,     1,     2,
       2,     3,     2,     2,     1,     1,     1,     1,     1,     2,
       1,     1,     2,     1,     1,     1,     1,     2,     2,     1,
       2,     2,     1,     1,     1,     1,     1,     1,     3,     3,
       3,     1,     0,     3,     3,     4,     0,     2,     7,     5,
       5,     5,     5,     5,     5,     1,     2,     4,     1,     3,
       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
       2,     2,     2,     2,     2,     3,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       3,     2,     3,     2,     3,     2,     3,     2,     3,     2,
       3,     2,     3,     2,     3,     2,     3,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     5,     4,
       5,     4,     2,     2,     2,     2,     2,     1,     3,     0,
       1,     0,     1,     2,     1,     3,     1,     1,     5,     3,
       1,     3,     1,     2,     1,     0,     3,     0,     1,     1,
       3,     1,     2,     1,     0,     1,     3,     1,     2,     1,
       0,     1,     1,     2,     0,     2,     1,     3,     1,     2,
       0,     2,     1,     1,     0,     2,     7,     8,     8,     1,
       1,     1,     1,     0
};


#define yyerrok         (yyerrstatus = 0)
#define yyclearin       (yychar = YYEMPTY)
#define YYEMPTY         (-2)
#define YYEOF           0

#define YYACCEPT        goto yyacceptlab
#define YYABORT         goto yyabortlab
#define YYERROR         goto yyerrorlab


#define YYRECOVERING()  (!!yyerrstatus)

#define YYBACKUP(Token, Value)                                    \
  do                                                              \
    if (yychar == YYEMPTY)                                        \
      {                                                           \
        yychar = (Token);                                         \
        yylval = (Value);                                         \
        YYPOPSTACK (yylen);                                       \
        yystate = *yyssp;                                         \
        goto yybackup;                                            \
      }                                                           \
    else                                                          \
      {                                                           \
        yyerror (&yylloc, yyscanner, parser, YY_("syntax error: cannot back up")); \
        YYERROR;                                                  \
      }                                                           \
  while (0)

/* Error token number */
#define YYTERROR        1
#define YYERRCODE       256


/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
   If N is 0, then set CURRENT to the empty location which ends
   the previous symbol: RHS[0] (always defined).  */

#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
    do                                                                  \
      if (N)                                                            \
        {                                                               \
          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
        }                                                               \
      else                                                              \
        {                                                               \
          (Current).first_line   = (Current).last_line   =              \
            YYRHSLOC (Rhs, 0).last_line;                                \
          (Current).first_column = (Current).last_column =              \
            YYRHSLOC (Rhs, 0).last_column;                              \
        }                                                               \
    while (0)
#endif

#define YYRHSLOC(Rhs, K) ((Rhs)[K])


/* Enable debugging if requested.  */
#if YYDEBUG

# ifndef YYFPRINTF
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)                        \
do {                                            \
  if (yydebug)                                  \
    YYFPRINTF Args;                             \
} while (0)


/* YY_LOCATION_PRINT -- Print the location on the stream.
   This macro was not mandated originally: define only if we know
   we won't break user code: when these are the locations we know.  */

#ifndef YY_LOCATION_PRINT
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL

/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */

YY_ATTRIBUTE_UNUSED
static int
yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
{
  int res = 0;
  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
  if (0 <= yylocp->first_line)
    {
      res += YYFPRINTF (yyo, "%d", yylocp->first_line);
      if (0 <= yylocp->first_column)
        res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
    }
  if (0 <= yylocp->last_line)
    {
      if (yylocp->first_line < yylocp->last_line)
        {
          res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
          if (0 <= end_col)
            res += YYFPRINTF (yyo, ".%d", end_col);
        }
      else if (0 <= end_col && yylocp->first_column < end_col)
        res += YYFPRINTF (yyo, "-%d", end_col);
    }
  return res;
 }

#  define YY_LOCATION_PRINT(File, Loc)          \
  yy_location_print_ (File, &(Loc))

# else
#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
# endif
#endif


# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
do {                                                                      \
  if (yydebug)                                                            \
    {                                                                     \
      YYFPRINTF (stderr, "%s ", Title);                                   \
      yy_symbol_print (stderr,                                            \
                  Type, Value, Location, yyscanner, parser); \
      YYFPRINTF (stderr, "\n");                                           \
    }                                                                     \
} while (0)


/*-----------------------------------.
| Print this symbol's value on YYO.  |
`-----------------------------------*/

static void
yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t yyscanner, SqlParser* parser)
{
  FILE *yyoutput = yyo;
  YYUSE (yyoutput);
  YYUSE (yylocationp);
  YYUSE (yyscanner);
  YYUSE (parser);
  if (!yyvaluep)
    return;
# ifdef YYPRINT
  if (yytype < YYNTOKENS)
    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
# endif
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YYUSE (yytype);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}


/*---------------------------.
| Print this symbol on YYO.  |
`---------------------------*/

static void
yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t yyscanner, SqlParser* parser)
{
  YYFPRINTF (yyo, "%s %s (",
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);

  YY_LOCATION_PRINT (yyo, *yylocationp);
  YYFPRINTF (yyo, ": ");
  yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, yyscanner, parser);
  YYFPRINTF (yyo, ")");
}

/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included).                                                   |
`------------------------------------------------------------------*/

static void
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
  YYFPRINTF (stderr, "Stack now");
  for (; yybottom <= yytop; yybottom++)
    {
      int yybot = *yybottom;
      YYFPRINTF (stderr, " %d", yybot);
    }
  YYFPRINTF (stderr, "\n");
}

# define YY_STACK_PRINT(Bottom, Top)                            \
do {                                                            \
  if (yydebug)                                                  \
    yy_stack_print ((Bottom), (Top));                           \
} while (0)


/*------------------------------------------------.
| Report that the YYRULE is going to be reduced.  |
`------------------------------------------------*/

static void
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, yyscan_t yyscanner, SqlParser* parser)
{
  int yylno = yyrline[yyrule];
  int yynrhs = yyr2[yyrule];
  int yyi;
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
             yyrule - 1, yylno);
  /* The symbols being reduced.  */
  for (yyi = 0; yyi < yynrhs; yyi++)
    {
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
      yy_symbol_print (stderr,
                       yystos[+yyssp[yyi + 1 - yynrhs]],
                       &yyvsp[(yyi + 1) - (yynrhs)]
                       , &(yylsp[(yyi + 1) - (yynrhs)])                       , yyscanner, parser);
      YYFPRINTF (stderr, "\n");
    }
}

# define YY_REDUCE_PRINT(Rule)          \
do {                                    \
  if (yydebug)                          \
    yy_reduce_print (yyssp, yyvsp, yylsp, Rule, yyscanner, parser); \
} while (0)

/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */


/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif


#if YYERROR_VERBOSE

# ifndef yystrlen
#  if defined __GLIBC__ && defined _STRING_H
#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
#  else
/* Return the length of YYSTR.  */
static YYPTRDIFF_T
yystrlen (const char *yystr)
{
  YYPTRDIFF_T yylen;
  for (yylen = 0; yystr[yylen]; yylen++)
    continue;
  return yylen;
}
#  endif
# endif

# ifndef yystpcpy
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
#   define yystpcpy stpcpy
#  else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   YYDEST.  */
static char *
yystpcpy (char *yydest, const char *yysrc)
{
  char *yyd = yydest;
  const char *yys = yysrc;

  while ((*yyd++ = *yys++) != '\0')
    continue;

  return yyd - 1;
}
#  endif
# endif

# ifndef yytnamerr
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   quotes and backslashes, so that it's suitable for yyerror.  The
   heuristic is that double-quoting is unnecessary unless the string
   contains an apostrophe, a comma, or backslash (other than
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   null, do not copy; instead, return the length of what the result
   would have been.  */
static YYPTRDIFF_T
yytnamerr (char *yyres, const char *yystr)
{
  if (*yystr == '"')
    {
      YYPTRDIFF_T yyn = 0;
      char const *yyp = yystr;

      for (;;)
        switch (*++yyp)
          {
          case '\'':
          case ',':
            goto do_not_strip_quotes;

          case '\\':
            if (*++yyp != '\\')
              goto do_not_strip_quotes;
            else
              goto append;

          append:
          default:
            if (yyres)
              yyres[yyn] = *yyp;
            yyn++;
            break;

          case '"':
            if (yyres)
              yyres[yyn] = '\0';
            return yyn;
          }
    do_not_strip_quotes: ;
    }

  if (yyres)
    return yystpcpy (yyres, yystr) - yyres;
  else
    return yystrlen (yystr);
}
# endif

/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   about the unexpected token YYTOKEN for the state stack whose top is
   YYSSP.

   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
   not large enough to hold the message.  In that case, also set
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
   required number of bytes is too large to store.  */
static int
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
                yy_state_t *yyssp, int yytoken)
{
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
  /* Internationalized format string. */
  const char *yyformat = YY_NULLPTR;
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
     one per "expected"). */
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
  /* Actual size of YYARG. */
  int yycount = 0;
  /* Cumulated lengths of YYARG.  */
  YYPTRDIFF_T yysize = 0;

  /* There are many possibilities here to consider:
     - If this state is a consistent state with a default action, then
       the only way this function was invoked is if the default action
       is an error action.  In that case, don't check for expected
       tokens because there are none.
     - The only way there can be no lookahead present (in yychar) is if
       this state is a consistent state with a default action.  Thus,
       detecting the absence of a lookahead is sufficient to determine
       that there is no unexpected or expected token to report.  In that
       case, just report a simple "syntax error".
     - Don't assume there isn't a lookahead just because this state is a
       consistent state with a default action.  There might have been a
       previous inconsistent state, consistent state with a non-default
       action, or user semantic action that manipulated yychar.
     - Of course, the expected token list depends on states to have
       correct lookahead information, and it depends on the parser not
       to perform extra reductions after fetching a lookahead from the
       scanner and before detecting a syntax error.  Thus, state merging
       (from LALR or IELR) and default reductions corrupt the expected
       token list.  However, the list is correct for canonical LR with
       one exception: it will still contain any token that will not be
       accepted due to an error action in a later state.
  */
  if (yytoken != YYEMPTY)
    {
      int yyn = yypact[+*yyssp];
      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
      yysize = yysize0;
      yyarg[yycount++] = yytname[yytoken];
      if (!yypact_value_is_default (yyn))
        {
          /* Start YYX at -YYN if negative to avoid negative indexes in
             YYCHECK.  In other words, skip the first -YYN actions for
             this state because they are default actions.  */
          int yyxbegin = yyn < 0 ? -yyn : 0;
          /* Stay within bounds of both yycheck and yytname.  */
          int yychecklim = YYLAST - yyn + 1;
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
          int yyx;

          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
                && !yytable_value_is_error (yytable[yyx + yyn]))
              {
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
                  {
                    yycount = 1;
                    yysize = yysize0;
                    break;
                  }
                yyarg[yycount++] = yytname[yyx];
                {
                  YYPTRDIFF_T yysize1
                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
                    yysize = yysize1;
                  else
                    return 2;
                }
              }
        }
    }

  switch (yycount)
    {
# define YYCASE_(N, S)                      \
      case N:                               \
        yyformat = S;                       \
      break
    default: /* Avoid compiler warnings. */
      YYCASE_(0, YY_("syntax error"));
      YYCASE_(1, YY_("syntax error, unexpected %s"));
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
# undef YYCASE_
    }

  {
    /* Don't count the "%s"s in the final size, but reserve room for
       the terminator.  */
    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
      yysize = yysize1;
    else
      return 2;
  }

  if (*yymsg_alloc < yysize)
    {
      *yymsg_alloc = 2 * yysize;
      if (! (yysize <= *yymsg_alloc
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
      return 1;
    }

  /* Avoid sprintf, as that infringes on the user's name space.
     Don't have undefined behavior even if the translation
     produced a string with the wrong number of "%s"s.  */
  {
    char *yyp = *yymsg;
    int yyi = 0;
    while ((*yyp = *yyformat) != '\0')
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
        {
          yyp += yytnamerr (yyp, yyarg[yyi++]);
          yyformat += 2;
        }
      else
        {
          ++yyp;
          ++yyformat;
        }
  }
  return 0;
}
#endif /* YYERROR_VERBOSE */

/*-----------------------------------------------.
| Release the memory associated to this symbol.  |
`-----------------------------------------------*/

static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, yyscan_t yyscanner, SqlParser* parser)
{
  YYUSE (yyvaluep);
  YYUSE (yylocationp);
  YYUSE (yyscanner);
  YYUSE (parser);
  if (!yymsg)
    yymsg = "Deleting";
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YYUSE (yytype);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}




/*----------.
| yyparse.  |
`----------*/

int
yyparse (yyscan_t yyscanner, SqlParser* parser)
{
/* The lookahead symbol.  */
int yychar;


/* The semantic value of the lookahead symbol.  */
/* Default value used for initialization, for pacifying older GCCs
   or non-GCC compilers.  */
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);

/* Location data for the lookahead symbol.  */
static YYLTYPE yyloc_default
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
  = { 1, 1, 1, 1 }
# endif
;
YYLTYPE yylloc = yyloc_default;

    /* Number of syntax errors so far.  */
    int yynerrs;

    yy_state_fast_t yystate;
    /* Number of tokens to shift before error messages enabled.  */
    int yyerrstatus;

    /* The stacks and their tools:
       'yyss': related to states.
       'yyvs': related to semantic values.
       'yyls': related to locations.

       Refer to the stacks through separate pointers, to allow yyoverflow
       to reallocate them elsewhere.  */

    /* The state stack.  */
    yy_state_t yyssa[YYINITDEPTH];
    yy_state_t *yyss;
    yy_state_t *yyssp;

    /* The semantic value stack.  */
    YYSTYPE yyvsa[YYINITDEPTH];
    YYSTYPE *yyvs;
    YYSTYPE *yyvsp;

    /* The location stack.  */
    YYLTYPE yylsa[YYINITDEPTH];
    YYLTYPE *yyls;
    YYLTYPE *yylsp;

    /* The locations where the error started and ended.  */
    YYLTYPE yyerror_range[3];

    YYPTRDIFF_T yystacksize;

  int yyn;
  int yyresult;
  /* Lookahead token as an internal (translated) token number.  */
  int yytoken = 0;
  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;
  YYLTYPE yyloc;

#if YYERROR_VERBOSE
  /* Buffer for error messages, and its allocated size.  */
  char yymsgbuf[128];
  char *yymsg = yymsgbuf;
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
#endif

#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  yyssp = yyss = yyssa;
  yyvsp = yyvs = yyvsa;
  yylsp = yyls = yylsa;
  yystacksize = YYINITDEPTH;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY; /* Cause a token to be read.  */
  yylsp[0] = yylloc;
  goto yysetstate;


/*------------------------------------------------------------.
| yynewstate -- push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;


/*--------------------------------------------------------------------.
| yysetstate -- set current state (the top of the stack) to yystate.  |
`--------------------------------------------------------------------*/
yysetstate:
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  YY_IGNORE_USELESS_CAST_BEGIN
  *yyssp = YY_CAST (yy_state_t, yystate);
  YY_IGNORE_USELESS_CAST_END

  if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
    goto yyexhaustedlab;
#else
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYPTRDIFF_T yysize = yyssp - yyss + 1;

# if defined yyoverflow
      {
        /* Give user a chance to reallocate the stack.  Use copies of
           these so that the &'s don't force the real ones into
           memory.  */
        yy_state_t *yyss1 = yyss;
        YYSTYPE *yyvs1 = yyvs;
        YYLTYPE *yyls1 = yyls;

        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
           be undefined if yyoverflow is a macro.  */
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * YYSIZEOF (*yyssp),
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                    &yyls1, yysize * YYSIZEOF (*yylsp),
                    &yystacksize);
        yyss = yyss1;
        yyvs = yyvs1;
        yyls = yyls1;
      }
# else /* defined YYSTACK_RELOCATE */
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
        goto yyexhaustedlab;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
        yystacksize = YYMAXDEPTH;

      {
        yy_state_t *yyss1 = yyss;
        union yyalloc *yyptr =
          YY_CAST (union yyalloc *,
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
        if (! yyptr)
          goto yyexhaustedlab;
        YYSTACK_RELOCATE (yyss_alloc, yyss);
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
        YYSTACK_RELOCATE (yyls_alloc, yyls);
# undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
      }
# endif

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;
      yylsp = yyls + yysize - 1;

      YY_IGNORE_USELESS_CAST_BEGIN
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
                  YY_CAST (long, yystacksize)));
      YY_IGNORE_USELESS_CAST_END

      if (yyss + yystacksize - 1 <= yyssp)
        YYABORT;
    }
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */

  if (yystate == YYFINAL)
    YYACCEPT;

  goto yybackup;


/*-----------.
| yybackup.  |
`-----------*/
yybackup:
  /* Do appropriate processing given the current state.  Read a
     lookahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to lookahead token.  */
  yyn = yypact[yystate];
  if (yypact_value_is_default (yyn))
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = yylex (&yylval, &yylloc, yyscanner, parser);
    }

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yytable_value_is_error (yyn))
        goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the lookahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
  yystate = yyn;
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END
  *++yylsp = yylloc;

  /* Discard the shifted token.  */
  yychar = YYEMPTY;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     '$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];

  /* Default location. */
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
  yyerror_range[1] = yyloc;
  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
  case 2:
#line 916 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        parser->result.push_back((yyvsp[0].stmt));
    }
#line 9131 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 3:
#line 919 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        parser->result.push_back((yyvsp[0].stmt));
    }
#line 9139 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 4:
#line 922 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.stmt) = (yyvsp[-1].stmt);
    }
#line 9147 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 42:
#line 966 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = (StmtNode*)(yyvsp[0].type_name);
    }
#line 9155 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 43:
#line 972 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                                             {
        InsertStmt* insert = (InsertStmt*)(yyvsp[-1].stmt);
        insert->priority = (PriorityEnum)(yyvsp[-7].integer);
        insert->is_ignore = (bool)(yyvsp[-6].integer);
        insert->is_merge = (bool)(yyvsp[-5].integer);
        insert->table_name = (yyvsp[-3].table_name);
        set_vector(insert->partition_names, (yyvsp[-2].string_list));
        set_vector(insert->on_duplicate, (yyvsp[0].assignment_list));
        insert->location = parser->get_location((yylsp[-8]), (yyloc));
        (yyval.stmt) = insert;
    }
#line 9171 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 44:
#line 986 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                            {
        InsertStmt* insert = (InsertStmt*)(yyvsp[0].stmt);
        insert->priority = (PriorityEnum)(yyvsp[-4].integer);
        insert->is_replace = true;
        insert->table_name = (yyvsp[-2].table_name);
        insert->location = parser->get_location((yylsp[-5]), (yyloc));
        set_vector(insert->partition_names, (yyvsp[-1].string_list));
        (yyval.stmt) = insert;
    }
#line 9185 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 45:
#line 998 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = cantor::pb::ast::PE_NO_PRIORITY;
    }
#line 9193 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 46:
#line 1001 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.integer) = cantor::pb::ast::PE_LOW_PRIORITY;
    }
#line 9201 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 47:
#line 1004 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.integer) = cantor::pb::ast::PE_HIGH_PRIORITY;
    }
#line 9209 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 48:
#line 1007 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.integer) = cantor::pb::ast::PE_DELAYED_PRIORITY;
    }
#line 9217 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 49:
#line 1012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false; // false
    }
#line 9225 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 50:
#line 1015 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.integer) = true; //true;
    }
#line 9233 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 51:
#line 1020 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false; // false
    }
#line 9241 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 52:
#line 1023 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = true; //true;
    }
#line 9249 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 53:
#line 1028 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.integer) = false;
    }
#line 9257 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 54:
#line 1031 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = true;
    }
#line 9265 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 55:
#line 1036 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 9271 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 57:
#line 1041 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        auto* insert = (InsertStmt*)(yyvsp[0].stmt);
        insert->location = parser->get_location((yylsp[-4]), (yyloc));
        set_vector(insert->columns, (yyvsp[-3].column_name_list));
        (yyval.stmt) = insert;
    }
#line 9282 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 58:
#line 1047 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        auto* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-3]), (yyloc));
        set_vector(insert->columns, (yyvsp[-2].column_name_list));
        insert->subquery_stmt = (SelectStmt*)(yyvsp[0].stmt);
        (yyval.stmt) = insert;
    }
#line 9294 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 59:
#line 1054 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        auto* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-5]), (yyloc));
        set_vector(insert->columns, (yyvsp[-4].column_name_list));
        auto* select = (SelectStmt*)(yyvsp[-1].stmt);
        select->is_in_braces = true;
        insert->subquery_stmt = select;
        (yyval.stmt) = insert;
    }
#line 9308 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 60:
#line 1063 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                          {
        auto* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-3]), (yyloc));
        set_vector(insert->columns, (yyvsp[-2].column_name_list));
        insert->subquery_stmt = (UnionStmt*)(yyvsp[0].stmt);
        (yyval.stmt) = insert;
    }
#line 9320 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 61:
#line 1070 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-2]), (yyloc));
        SelectStmt* select = (SelectStmt*)(yyvsp[-1].stmt);
        select->is_in_braces = true;
        insert->subquery_stmt = select;
        (yyval.stmt) = insert;
    }
#line 9333 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 62:
#line 1078 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[0]), (yyloc));
        insert->subquery_stmt = (SelectStmt*)(yyvsp[0].stmt);
        (yyval.stmt) = insert;
    }
#line 9344 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 63:
#line 1084 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-2]), (yyloc));
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-1].stmt);
        union_stmt->is_in_braces = true;
        insert->subquery_stmt = union_stmt;
        (yyval.stmt) = insert;
    }
#line 9357 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 64:
#line 1092 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[0]), (yyloc));
        insert->subquery_stmt = (UnionStmt*)(yyvsp[0].stmt);
        (yyval.stmt) = insert;
    }
#line 9368 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 65:
#line 1098 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        InsertStmt* insert = (InsertStmt*)(yyvsp[0].stmt);
        insert->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.stmt) = insert;
    }
#line 9378 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 66:
#line 1103 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-1]), (yyloc));
        auto row_expr = new_node(RowExpr);
        row_expr->location = parser->get_location((yylsp[0]));
        for (int i = 0; i < (yyvsp[0].assignment_list)->size(); i++) {
            Assignment* assign = (*(yyvsp[0].assignment_list))[i];
            insert->columns.push_back(assign->name, parser->arena);
            row_expr->sub_exprs.push_back(assign->expr, parser->arena);
        }
        insert->lists.push_back(row_expr, parser->arena);
        (yyval.stmt) = insert;
    }
#line 9396 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 69:
#line 1122 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.assignment_list) = nullptr;    
    }
#line 9404 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 70:
#line 1125 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                             {
        (yyval.assignment_list) = (yyvsp[0].assignment_list);
    }
#line 9412 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 71:
#line 1130 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.assignment_list) = append_vector<Assignment*>(nullptr, (yyvsp[0].assignment), parser->arena, 10);
    }
#line 9420 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 72:
#line 1133 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        (yyvsp[-2].assignment_list)->push_back((yyvsp[0].assignment), parser->arena);
        (yyval.assignment_list) = (yyvsp[-2].assignment_list);
    }
#line 9429 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 73:
#line 1139 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                             {
        Assignment* assign = new_node(Assignment);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->name = (yyvsp[-2].column_name);
        assign->expr = (yyvsp[0].expr);
        (yyval.assignment) = assign;
    }
#line 9441 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 76:
#line 1152 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        InsertStmt* insert = InsertStmt::New(parser->arena);
        insert->location = parser->get_location((yylsp[-2]), (yyloc));
        insert->lists.push_back((yyvsp[-1].row_expr), parser->arena);
        (yyval.stmt) = insert;
    }
#line 9452 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 77:
#line 1158 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        InsertStmt* insert = (InsertStmt*)(yyvsp[-4].stmt);
        insert->location = parser->get_location((yylsp[-4]), (yyloc));
        insert->lists.push_back((yyvsp[-1].row_expr), parser->arena);
        (yyval.stmt) = insert;
    }
#line 9463 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 78:
#line 1167 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        auto row = new_node(RowExpr);
        row->sub_exprs.reserve(10, parser->arena);
        row->sub_exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.expr) = row;
    }
#line 9474 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 79:
#line 1173 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        auto row = (RowExpr*)(yyvsp[-2].expr);
        row->location = parser->get_location((yylsp[0]));
        row->sub_exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.expr) = row;
    }
#line 9485 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 80:
#line 1181 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        (yyvsp[-3].row_expr)->sub_exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyvsp[-3].row_expr)->location = parser->get_location((yylsp[-4]), (yyloc));
        (yyval.expr) = (RowExpr*)(yyvsp[-3].row_expr);
    }
#line 9495 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 81:
#line 1186 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        (yyvsp[-3].row_expr)->sub_exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyvsp[-3].row_expr)->location = parser->get_location((yylsp[-5]), (yyloc));
        (yyval.expr) = (RowExpr*)(yyvsp[-3].row_expr);
    }
#line 9505 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 82:
#line 1193 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
         {
        auto row = new_node(RowExpr);
        row->location = parser->get_location((yylsp[0]));
        row->sub_exprs.reserve(10, parser->arena);
        row->sub_exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.row_expr) = row;
    }
#line 9517 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 83:
#line 1200 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        auto row = (RowExpr*)(yyvsp[-2].row_expr);
        row->location = parser->get_location((yylsp[-2]), (yyloc));
        row->sub_exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.row_expr) = row;
    }
#line 9528 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 84:
#line 1208 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.column_name_list) = nullptr;
    }
#line 9536 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 85:
#line 1211 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        (yyval.column_name_list) = (yyvsp[0].column_name_list);
    }
#line 9544 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 86:
#line 1218 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.range_var_list) = nullptr;
            }
#line 9552 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 87:
#line 1221 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
                (yyval.range_var_list) = (yyvsp[0].range_var_list);
            }
#line 9560 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 88:
#line 1227 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.range_var_list) = append_vector<RangeVar*>(nullptr, (yyvsp[0].range_var), parser->arena, 10);
    }
#line 9568 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 89:
#line 1230 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                          {
        (yyvsp[-2].range_var_list)->push_back((yyvsp[0].range_var), parser->arena);
        (yyval.range_var_list) = (yyvsp[-2].range_var_list);
     }
#line 9577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 90:
#line 1238 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.column_name_list) = append_vector<ColumnName*>(nullptr, (yyvsp[0].column_name), parser->arena, 10);
            }
#line 9585 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 91:
#line 1241 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                            {
                (yyvsp[-2].column_name_list)->push_back((yyvsp[0].column_name), parser->arena);
                (yyval.column_name_list) = (yyvsp[-2].column_name_list);
             }
#line 9594 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 92:
#line 1248 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* var = new_node(RangeVar);
        var->location = parser->get_location((yylsp[0]));
        var->column = (yyvsp[0].column_name);
        (yyval.range_var) = var;
    }
#line 9605 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 93:
#line 1267 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            { (yyval.indirection_list) = nullptr; }
#line 9611 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 94:
#line 1269 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            { (yyval.indirection_list) = (yyvsp[0].indirection_list); }
#line 9617 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 95:
#line 1275 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.indirection_list) = append_vector<Indirection*>(nullptr, (yyvsp[0].indirection), parser->arena);
            }
#line 9625 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 96:
#line 1279 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.indirection_list) = append_vector<Indirection*>((yyvsp[-1].indirection_list), (yyvsp[0].indirection), parser->arena);
            }
#line 9633 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 97:
#line 1286 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionIndex);
                node->location = parser->get_location((yylsp[-2]), (yyloc));
                node->index_expr = (yyvsp[-1].expr);
                (yyval.indirection) = node;
            }
#line 9644 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 98:
#line 1293 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionSlice);
                node->location = parser->get_location((yylsp[-3]), (yyloc));
                node->slice_low = (yyvsp[-2].expr);
                (yyval.indirection) = node;
            }
#line 9655 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 99:
#line 1300 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionSlice);
                node->location = parser->get_location((yylsp[-3]), (yyloc));
                node->slice_high = (yyvsp[-1].expr);
                (yyval.indirection) = node;
            }
#line 9666 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 100:
#line 1307 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionSlice);
                node->location = parser->get_location((yylsp[-2]), (yyloc));
                (yyval.indirection) = node;
            }
#line 9676 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 101:
#line 1313 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionSlice);
                node->location = parser->get_location((yylsp[-4]), (yyloc));
                node->slice_low = (yyvsp[-3].expr);
                node->slice_high = (yyvsp[-1].expr);
                (yyval.indirection) = node;
            }
#line 9688 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 102:
#line 1321 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(IndirectionSlice);
                node->location = parser->get_location((yylsp[-6]), (yyloc));
                node->slice_low = (yyvsp[-5].expr);
                node->slice_high = (yyvsp[-3].expr);
                node->slice_step = (yyvsp[-1].expr);
                (yyval.indirection) = node;
            }
#line 9701 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 103:
#line 1332 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.column_name) = (yyvsp[0].column_name);
    }
#line 9709 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 104:
#line 1335 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        (yyval.column_name) = (yyvsp[-3].column_name);
    }
#line 9717 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 105:
#line 1338 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                             {
        (yyval.column_name) = (yyvsp[-1].column_name);
    }
#line 9725 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 106:
#line 1344 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        (yyval.column_name_list) = append_vector<ColumnName*>(nullptr, (yyvsp[0].column_name), parser->arena, 10);
    }
#line 9733 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 107:
#line 1347 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        (yyvsp[-2].column_name_list)->push_back((yyvsp[0].column_name), parser->arena);
        (yyval.column_name_list) = (yyvsp[-2].column_name_list);
    }
#line 9742 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 108:
#line 1355 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* name = new_node(TableName);
            name->table_name = (yyvsp[0].string);
            name->location = parser->get_location((yylsp[0]));
            (yyval.table_name) = name;
        }
#line 9753 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 109:
#line 1362 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* name = new_node(TableName);
                name->location = parser->get_location((yylsp[-2]), (yyloc));
                name->table_name = (yyvsp[0].string);
                name->db_name = (yyvsp[-2].string);
                (yyval.table_name) = name;
        }
#line 9765 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 110:
#line 1370 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* name = new_node(TableName);
                name->location = parser->get_location((yylsp[-4]), (yyloc));
                name->table_name = (yyvsp[0].string);
                name->db_name = (yyvsp[-2].string);
                name->ns_name = (yyvsp[-4].string);
                (yyval.table_name) = name;
        }
#line 9778 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 111:
#line 1382 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* name = new_node(ColumnName);
            name->column_name = (yyvsp[0].string);
            name->location = parser->get_location((yylsp[0]));
            (yyval.column_name) = name;
        }
#line 9789 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 112:
#line 1389 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* name = new_node(ColumnName);
                name->location = parser->get_location((yylsp[-2]), (yyloc));
                name->table_name = (yyvsp[-2].string);
                name->column_name = (yyvsp[0].string);
                (yyval.column_name) = name;
        }
#line 9801 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 113:
#line 1397 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* name = new_node(ColumnName);
                name->location = parser->get_location((yylsp[-4]), (yyloc));
                name->column_name = (yyvsp[0].string);
                name->table_name = (yyvsp[-2].string);
                name->db_name = (yyvsp[-4].string);
                (yyval.column_name) = name;
        }
#line 9814 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 114:
#line 1406 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* name = new_node(ColumnName);
                name->location = parser->get_location((yylsp[-6]), (yyloc));
                name->column_name = (yyvsp[0].string);
                name->table_name = (yyvsp[-2].string);
                name->db_name = (yyvsp[-4].string);
                name->ns_name = (yyvsp[-6].string);
                (yyval.column_name) = name;
        }
#line 9828 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 115:
#line 1418 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.type_name_uri) = nullptr;
            }
#line 9836 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 116:
#line 1422 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.type_name_uri) = (yyvsp[0].type_name_uri);
            }
#line 9844 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 117:
#line 1427 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto* name = new_node(TypeNameUri);
                name->type_name = (yyvsp[0].string);
                name->location = parser->get_location((yylsp[0]));
                (yyval.type_name_uri) = name;
            }
#line 9855 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 118:
#line 1434 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto* name = new_node(TypeNameUri);
                name->location = parser->get_location((yylsp[-2]), (yyloc));
                name->ns_name = (yyvsp[-2].string);
                name->type_name = (yyvsp[0].string);
                (yyval.type_name_uri) = name;
            }
#line 9867 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 119:
#line 1442 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                    auto* name = new_node(TypeNameUri);
                    name->location = parser->get_location((yylsp[-4]), (yyloc));
                    name->ns_name = (yyvsp[-4].string);
                    name->db_name = (yyvsp[-2].string);
                    name->type_name = (yyvsp[0].string);
                    (yyval.type_name_uri) = name;
            }
#line 9880 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 120:
#line 1451 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                    auto* name = new_node(TypeNameUri);
                    name->location = parser->get_location((yylsp[-6]), (yyloc));
                    name->ns_name = (yyvsp[-6].string);
                    name->db_name = (yyvsp[-4].string);
                    name->table_name = (yyvsp[-2].string);
                    name->type_name = (yyvsp[0].string);
                    (yyval.type_name_uri) = name;
            }
#line 9894 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 122:
#line 1467 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_name_list) = append_vector<TableName*>(nullptr, (yyvsp[0].table_name), parser->arena, 10);
    }
#line 9902 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 123:
#line 1471 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-2].table_name_list)->push_back((yyvsp[0].table_name), parser->arena);
        (yyval.table_name_list) = (yyvsp[-2].table_name_list);
    }
#line 9911 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 124:
#line 1478 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                                  {
        UpdateStmt* update = new_node(UpdateStmt);
        update->location = parser->get_location((yylsp[-8]), (yyloc));
        update->priority = (PriorityEnum)(yyvsp[-7].integer);
        update->is_ignore = (yyvsp[-6].integer);
        update->table_refs = (yyvsp[-5].table_ref);
        set_vector(update->set_list, (yyvsp[-3].assignment_list));
        update->where = (yyvsp[-2].where_clause);
        update->order = (yyvsp[-1].order_by);
        update->limit = (yyvsp[0].limit);
        (yyval.stmt) = update;
    }
#line 9928 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 125:
#line 1490 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                         {
        UpdateStmt* update = new_node(UpdateStmt);
        update->location = parser->get_location((yylsp[-6]), (yyloc));
        update->priority = (PriorityEnum)(yyvsp[-5].integer);
        update->is_ignore = (yyvsp[-4].integer);
        update->table_refs = (yyvsp[-3].table_ref);
        set_vector(update->set_list, (yyvsp[-1].assignment_list));
        update->where = (yyvsp[0].where_clause);
        (yyval.stmt) = update;
    }
#line 9943 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 126:
#line 1502 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                  {
        TruncateStmt* truncate_stmt = new_node(TruncateStmt);
        truncate_stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        truncate_stmt->table_name = (yyvsp[-1].table_name);
        set_vector(truncate_stmt->partition_names, (yyvsp[0].string_list));
        (yyval.stmt) = truncate_stmt;
    }
#line 9955 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 127:
#line 1509 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                              {
        TruncateStmt* truncate_stmt = new_node(TruncateStmt);
        truncate_stmt->location = parser->get_location((yylsp[-2]), (yyloc));
        truncate_stmt->table_name = (yyvsp[-1].table_name);
        set_vector(truncate_stmt->partition_names, (yyvsp[0].string_list));
        (yyval.stmt) = truncate_stmt;
    }
#line 9967 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 128:
#line 1519 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                                                        {
        DeleteStmt* delete_stmt = new_node(DeleteStmt);
        delete_stmt->location = parser->get_location((yylsp[-9]), (yyloc));
        delete_stmt->priority = (PriorityEnum)(yyvsp[-8].integer);
        delete_stmt->is_quick = (yyvsp[-7].integer);
        delete_stmt->is_ignore = (bool)(yyvsp[-6].integer);
        delete_stmt->table_name = (yyvsp[-4].table_name);
        set_vector(delete_stmt->partition_names, (yyvsp[-3].string_list));
        delete_stmt->where = (yyvsp[-2].where_clause);
        delete_stmt->order = (yyvsp[-1].order_by);
        delete_stmt->limit = (yyvsp[0].limit);
        (yyval.stmt) = delete_stmt;
    }
#line 9985 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 129:
#line 1532 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                       {
        DeleteStmt* delete_stmt = new_node(DeleteStmt);
        delete_stmt->location = parser->get_location((yylsp[-7]), (yyloc));
        delete_stmt->priority = (PriorityEnum)(yyvsp[-6].integer);
        delete_stmt->is_quick = (bool)(yyvsp[-5].integer);
        delete_stmt->is_ignore = (bool)(yyvsp[-4].integer);
        set_vector(delete_stmt->delete_table_list, (yyvsp[-3].table_name_list));
        delete_stmt->from_table = (yyvsp[-1].table_ref);
        delete_stmt->where = (yyvsp[0].where_clause);
        (yyval.stmt) = delete_stmt;
    }
#line 10001 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 130:
#line 1546 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.table_ref) = (yyvsp[0].table_ref);    
    }
#line 10009 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 131:
#line 1549 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        JoinNode* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-2]), (yyloc));
        join_node->left = (yyvsp[-2].table_ref);
        join_node->right = (yyvsp[0].table_ref);
        auto ref = new_node(TableRef);
        ref->join_node= join_node;
        (yyval.table_ref) = ref;
    }
#line 10023 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 132:
#line 1560 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                       {
        (yyval.table_ref) = (yyvsp[0].table_ref); 
    }
#line 10031 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 133:
#line 1563 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        (yyvsp[-1].table_ref)->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.table_ref) = (yyvsp[-1].table_ref);
    }
#line 10040 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 134:
#line 1569 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.table_ref) = (yyvsp[0].table_ref); 
    }
#line 10048 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 135:
#line 1572 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.table_ref) = (yyvsp[0].table_ref);
    }
#line 10056 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 136:
#line 1578 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                   {
        TableSource* table_source = new_node(TableSource);
        table_source->location = parser->get_location((yylsp[-3]), (yyloc));
        table_source->table_name = (yyvsp[-3].table_name);
        set_vector(table_source->partition_names, (yyvsp[-2].string_list));
        table_source->as_name = (yyvsp[-1].string);
        set_vector(table_source->index_hints, (yyvsp[0].index_hint_list));
        auto ref = new_node(TableRef);
        ref->source = table_source;
        (yyval.table_ref) = ref;
    }
#line 10072 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 137:
#line 1589 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        TableSource* table_source = new_node(TableSource);
        table_source->location = parser->get_location((yylsp[-3]), (yyloc));
        SelectStmt* select = (SelectStmt*)(yyvsp[-2].stmt);
        select->is_in_braces = true;
        table_source->derived_table = select;
        table_source->as_name = (yyvsp[0].string);
        auto ref = new_node(TableRef);
        ref->source = table_source;
        (yyval.table_ref) = ref;
    }
#line 10088 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 138:
#line 1600 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        TableSource* table_source = new_node(TableSource);
        table_source->location = parser->get_location((yylsp[-3]), (yyloc));
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-2].stmt);
        union_stmt->is_in_braces = true;
        table_source->derived_table = union_stmt;
        table_source->as_name = (yyvsp[0].string);
        auto ref = new_node(TableRef);
        ref->source = table_source;
        (yyval.table_ref) = ref;
    }
#line 10104 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 139:
#line 1611 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                {
        TableSource* table_source = new_node(TableSource);
        table_source->location = parser->get_location((yylsp[-4]), (yyloc));
        SelectStmt* select = (SelectStmt*)(yyvsp[-2].stmt);
        select->with = (WithClause*)(yyvsp[-3].with_clause);
        select->is_in_braces = true;
        table_source->derived_table = select;
        table_source->as_name = (yyvsp[0].string);
        auto ref = new_node(TableRef);
        ref->source = table_source;
        (yyval.table_ref) = ref;
    }
#line 10121 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 140:
#line 1623 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                               {
        TableSource* table_source = new_node(TableSource);
        table_source->location = parser->get_location((yylsp[-4]), (yyloc));
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-2].stmt);
        for (int i = 0; i < union_stmt->select_stmts.size(); ++i) {
            union_stmt->select_stmts[i]->with = (cantor::parser::WithClause*)(yyvsp[-3].with_clause);
        }
        union_stmt->is_in_braces = true;
        table_source->derived_table = union_stmt;
        table_source->as_name = (yyvsp[0].string);
        auto ref = new_node(TableRef);
        ref->source = table_source;
        (yyval.table_ref) = ref;
    }
#line 10140 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 141:
#line 1637 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyval.table_ref) = (yyvsp[-1].table_ref); 
    }
#line 10148 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 142:
#line 1643 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_list) = nullptr;
    }
#line 10156 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 143:
#line 1646 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                          {
        (yyval.string_list) = (yyvsp[-1].string_list);
    }
#line 10164 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 144:
#line 1651 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        Vector<String>* string_list = new_node(Vector<String>);
        string_list->reserve(2, parser->arena);
        string_list->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = string_list;
    }
#line 10175 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 145:
#line 1657 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        (yyvsp[-2].string_list)->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = (yyvsp[-2].string_list);
    }
#line 10184 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 146:
#line 1664 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 10192 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 147:
#line 1667 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.string) = (yyvsp[0].string); 
    }
#line 10200 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 148:
#line 1673 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 10208 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 149:
#line 1676 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.string) = (yyvsp[0].string);
    }
#line 10216 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 150:
#line 1682 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_hint_list) = nullptr;                
    }
#line 10224 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 151:
#line 1685 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.index_hint_list) = (yyvsp[0].index_hint_list); 
    }
#line 10232 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 152:
#line 1691 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 10240 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 153:
#line 1694 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = true;
    }
#line 10248 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 154:
#line 1700 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.index_hint_list) = append_vector<IndexHint*>(nullptr, (yyvsp[0].index_hint), parser->arena, 10);
    }
#line 10256 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 155:
#line 1703 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        (yyvsp[-1].index_hint_list)->push_back((yyvsp[0].index_hint), parser->arena);
        (yyval.index_hint_list) = (yyvsp[-1].index_hint_list);
    }
#line 10265 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 156:
#line 1710 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                       {
        IndexHint* index_hint = new_node(IndexHint);
        index_hint->location = parser->get_location((yylsp[-4]), (yyloc));
        index_hint->hint_type = (cantor::pb::ast::IndexHintType)(yyvsp[-4].integer);
        index_hint->hint_scope = (cantor::pb::ast::IndexHintScope)(yyvsp[-3].integer);
        if ((yyvsp[-1].string_list) != nullptr) {
            for (int i = 0; i < (yyvsp[-1].string_list)->size(); ++i) {
                index_hint->index_name_list.push_back((*(yyvsp[-1].string_list))[i], parser->arena); 
            }
        }
        (yyval.index_hint) = index_hint;
    }
#line 10282 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 157:
#line 1725 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.integer) = cantor::pb::ast::IHT_HINT_USE;
    }
#line 10290 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 158:
#line 1728 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyval.integer) = cantor::pb::ast::IHT_HINT_IGNORE;
    }
#line 10298 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 159:
#line 1731 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        (yyval.integer) = cantor::pb::ast::IHT_HINT_FORCE;
    }
#line 10306 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 162:
#line 1741 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
    }
#line 10313 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 164:
#line 1747 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = cantor::pb::ast::IHS_HINT_SCAN;
    }
#line 10321 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 165:
#line 1750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.integer) = cantor::pb::ast::IHS_HINT_JOIN;
    }
#line 10329 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 166:
#line 1753 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.integer) = cantor::pb::ast::IHS_HINT_ORDER_BY;
    }
#line 10337 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 167:
#line 1756 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.integer) = cantor::pb::ast::IHS_HINT_GROUP_BY;
    }
#line 10345 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 168:
#line 1761 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.string_list) = nullptr; 
    }
#line 10353 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 169:
#line 1764 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        Vector<String>* string_list = new_node(Vector<String>);
        string_list->reserve(10, parser->arena);
        string_list->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = string_list;
    }
#line 10364 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 170:
#line 1770 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                          {
        (yyvsp[-2].string_list)->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = (yyvsp[-2].string_list);
    }
#line 10373 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 171:
#line 1777 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 10381 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 172:
#line 1780 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.string) = (yyvsp[0].string);
    }
#line 10389 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 173:
#line 1786 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                      {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-2]), (yyloc));
        join_node->left = (yyvsp[-2].table_ref);
        join_node->right = (yyvsp[0].table_ref);
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10403 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 174:
#line 1795 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-4]), (yyloc));
        join_node->left = (yyvsp[-4].table_ref);
        join_node->right = (yyvsp[-2].table_ref);
        join_node->expr = (yyvsp[0].expr);
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10418 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 175:
#line 1805 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                      {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-6]), (yyloc));
        join_node->left =  (yyvsp[-6].table_ref);
        join_node->right = (yyvsp[-4].table_ref);
        set_vector(join_node->using_col, (yyvsp[-1].range_var_list));
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10433 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 176:
#line 1815 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                       {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-6]), (yyloc));
        join_node->left =  (yyvsp[-6].table_ref);
        join_node->join_type = (cantor::pb::ast::JoinType)(yyvsp[-5].integer);
        join_node->right = (yyvsp[-2].table_ref);
        join_node->expr = (yyvsp[0].expr);
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10449 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 177:
#line 1826 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                    {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-8]), (yyloc));
        join_node->left = (yyvsp[-8].table_ref);
        join_node->join_type = (cantor::pb::ast::JoinType)(yyvsp[-7].integer);
        join_node->right = (yyvsp[-4].table_ref);
        set_vector(join_node->using_col, (yyvsp[-1].range_var_list));
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10465 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 178:
#line 1837 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-2]), (yyloc));
        join_node->left = (yyvsp[-2].table_ref);
        join_node->right = (yyvsp[0].table_ref);
        join_node->is_straight = true;
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10480 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 179:
#line 1847 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                              {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-4]), (yyloc));
        join_node->left = (yyvsp[-4].table_ref);
        join_node->right = (yyvsp[-2].table_ref);
        join_node->is_straight = true;
        join_node->expr = (yyvsp[0].expr);
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10496 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 180:
#line 1858 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-3]), (yyloc));
        join_node->left = (yyvsp[-3].table_ref);
        join_node->right = (yyvsp[0].table_ref);
        join_node->is_natural = true;
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10511 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 181:
#line 1868 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-4]), (yyloc));
        join_node->left = (yyvsp[-4].table_ref);
        join_node->right = (yyvsp[0].table_ref);
        join_node->is_natural = true;
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10526 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 182:
#line 1878 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                       {
        auto* join_node = new_node(JoinNode);
        join_node->location = parser->get_location((yylsp[-5]), (yyloc));
        join_node->left = (yyvsp[-5].table_ref);
        join_node->join_type = (cantor::pb::ast::JoinType)(yyvsp[-3].integer);
        join_node->right = (yyvsp[0].table_ref);
        join_node->is_natural = true;
        auto ref = new_node(TableRef);
        ref->join_node = join_node;
        (yyval.table_ref) = ref;
    }
#line 10542 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 183:
#line 1892 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
         {
        (yyval.integer) = cantor::pb::ast::JT_LEFT_JOIN;
    }
#line 10550 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 184:
#line 1895 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::JT_RIGHT_JOIN;
    }
#line 10558 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 185:
#line 1898 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.integer) = cantor::pb::ast::JT_FULL_JOIN;
    }
#line 10566 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 186:
#line 1903 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 10572 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 191:
#line 1912 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.limit) = nullptr;
    }
#line 10580 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 192:
#line 1915 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        auto count = (yyvsp[0].expr);
        auto limit = new_node(LimitClause);
        count->location = parser->get_location((yylsp[0]));
        limit->location = parser->get_location((yylsp[-1]), (yyloc));
        limit->count = count;
        limit->offset = ConstantExpr::make_int("0", parser->arena);
        (yyval.limit) = limit;
    }
#line 10594 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 193:
#line 1924 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        auto offset = (yyvsp[-2].expr);
        auto count = (yyvsp[0].expr);
        LimitClause* limit = new_node(LimitClause);
        offset->location = parser->get_location((yylsp[-2]));
        count->location = parser->get_location((yylsp[0]));
        limit->location = parser->get_location((yylsp[-3]), (yyloc));
        limit->offset = offset;
        limit->count = count;
        (yyval.limit) = limit;
    }
#line 10610 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 194:
#line 1935 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        auto count = (yyvsp[-2].expr);
        auto offset = (yyvsp[0].expr);
        LimitClause* limit = new_node(LimitClause);
        offset->location = parser->get_location((yylsp[0]));
        count->location = parser->get_location((yylsp[-2]));
        limit->location = parser->get_location((yylsp[-3]), (yyloc));
        limit->offset = offset;
        limit->count = count;
        (yyval.limit) = limit;
    }
#line 10626 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 195:
#line 1949 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        auto node = new_node(WhereClause);
        node->expr = (yyvsp[0].expr);
        node->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.where_clause) = node;
    }
#line 10637 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 196:
#line 1957 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.where_clause) = nullptr;
    }
#line 10645 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 197:
#line 1960 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.where_clause) = (yyvsp[0].where_clause);
    }
#line 10653 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 198:
#line 1965 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.having_clause) = nullptr;
    }
#line 10661 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 199:
#line 1968 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        auto node = new_node(HavingClause);
        node->expr = (yyvsp[0].expr);
        node->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.having_clause) = node;
    }
#line 10672 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 200:
#line 1976 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.order_by) = nullptr; 
    }
#line 10680 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 201:
#line 1979 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.order_by) = (yyvsp[0].order_by);
    }
#line 10688 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 202:
#line 1984 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        OrderByClause* order = new_node(OrderByClause);
        order->location = parser->get_location((yylsp[-2]), (yyloc));
        set_vector(order->items, (yyvsp[0].by_item_list));
        (yyval.order_by) = order;
    }
#line 10699 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 203:
#line 1993 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.group_by) = nullptr;
    }
#line 10707 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 204:
#line 1996 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.group_by) = (yyvsp[0].group_by);
    }
#line 10715 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 205:
#line 2002 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        GroupByClause* group = new_node(GroupByClause);
        group->location = parser->get_location((yylsp[-2]), (yyloc));
        set_vector(group->items, (yyvsp[0].by_item_list));
        (yyval.group_by) = group;
    }
#line 10726 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 206:
#line 2010 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.by_item_list) = append_vector<ByItem*>(nullptr, (yyvsp[0].by_item), parser->arena);
    }
#line 10734 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 207:
#line 2013 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyvsp[-2].by_item_list)->push_back((yyvsp[0].by_item), parser->arena);
        (yyval.by_item_list) = (yyvsp[-2].by_item_list);
    }
#line 10743 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 208:
#line 2020 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ByItem* item = new_node(ByItem);
        item->location = parser->get_location((yylsp[-1]), (yyloc));
        item->expr = (yyvsp[-1].expr);
        item->is_desc = (yyvsp[0].integer);
        (yyval.by_item) = item;
    }
#line 10755 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 209:
#line 2029 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.integer) = false; // ASC by default
    }
#line 10763 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 210:
#line 2032 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.integer) = false;
    }
#line 10771 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 211:
#line 2035 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.integer) = true;
    }
#line 10779 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 212:
#line 2040 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                          {
        (yyval.select_opts) = new_node(SelectStmtOpts);
        (yyval.select_opts)->location = parser->get_location((yylsp[-4]), (yyloc));
        (yyval.select_opts)->distinct = (yyvsp[-4].integer);
        (yyval.select_opts)->priority = (PriorityEnum)(yyvsp[-3].integer);
        (yyval.select_opts)->straight_join = (yyvsp[-2].integer);
        (yyval.select_opts)->sql_cache = (yyvsp[-1].integer);
        (yyval.select_opts)->calc_found_rows = (yyvsp[0].integer);
    }
#line 10793 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 213:
#line 2051 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                       {
        SelectStmt* select = new_node(SelectStmt);
        select->location = parser->get_location((yylsp[-3]), (yyloc));
        select->option = (yyvsp[-2].string);
        select->select_opt = (yyvsp[-1].select_opts);
        set_vector(select->fields, (yyvsp[0].select_field_list));
        (yyval.stmt) = select;
    }
#line 10806 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 214:
#line 2061 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                 {
        SelectStmt* select = (SelectStmt*)(yyvsp[-2].stmt);
        select->location = parser->get_location((yylsp[-2]), (yyloc));
        select->where = (yyvsp[0].where_clause);
        (yyval.stmt) = select;
    }
#line 10817 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 215:
#line 2069 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                            {
        SelectStmt* select = (SelectStmt*)(yyvsp[-5].stmt);
        select->location = parser->get_location((yylsp[-5]), (yyloc));
        select->table_refs = (yyvsp[-3].table_ref);
        select->where = (yyvsp[-2].where_clause);
        select->group = (yyvsp[-1].group_by);
        select->having = (yyvsp[0].having_clause);
        (yyval.stmt) = select;
    }
#line 10831 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 216:
#line 2081 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                              {
        SelectStmt* select = (SelectStmt*)(yyvsp[-3].stmt);
        select->location = parser->get_location((yylsp[-3]), (yyloc));
        select->order = (yyvsp[-2].order_by);
        select->limit = (yyvsp[-1].limit);
        select->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = select;
    }
#line 10844 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 217:
#line 2089 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        SelectStmt* select = (SelectStmt*)(yyvsp[-2].stmt);
        select->location = parser->get_location((yylsp[-2]), (yyloc));
        select->limit = (yyvsp[-1].limit);
        select->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = select;
    }
#line 10856 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 218:
#line 2096 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                    {
        SelectStmt* select = (SelectStmt*)(yyvsp[-3].stmt);
        select->location = parser->get_location((yylsp[-3]), (yyloc));
        select->order = (yyvsp[-2].order_by);
        select->limit = (yyvsp[-1].limit);
        select->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = select;
    }
#line 10869 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 219:
#line 2107 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.select_lock) = cantor::pb::ast::SL_NONE;
    }
#line 10877 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 220:
#line 2110 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.select_lock) = cantor::pb::ast::SL_FOR_UPDATE;
    }
#line 10885 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 221:
#line 2113 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.select_lock) = cantor::pb::ast::SL_IN_SHARE;
    }
#line 10893 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 223:
#line 2121 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.integer) = false;
    }
#line 10901 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 224:
#line 2124 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        (yyval.integer) = true;
    }
#line 10909 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 225:
#line 2129 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.integer) = false;
    }
#line 10917 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 226:
#line 2132 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.integer) = true;
    }
#line 10925 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 227:
#line 2135 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.integer) = false;
    }
#line 10933 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 228:
#line 2140 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 10941 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 229:
#line 2143 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.integer) = true;
    }
#line 10949 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 230:
#line 2148 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.select_field_list) = append_vector<SelectField*>(nullptr, (yyvsp[0].select_field), parser->arena, 10);
    }
#line 10957 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 231:
#line 2151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        (yyvsp[-2].select_field_list)->push_back((yyvsp[0].select_field), parser->arena);
        (yyval.select_field_list) = (yyvsp[-2].select_field_list);
    }
#line 10966 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 232:
#line 2159 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
       auto* select_field = new_node(SelectField);
       select_field->location = parser->get_location((yylsp[0]));
       select_field->wild_card = true;
       (yyval.select_field) = select_field;
    }
#line 10977 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 233:
#line 2166 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
       auto* select_field = new_node(SelectField);
       select_field->location = parser->get_location((yylsp[-2]), (yyloc));
       select_field->wild_card = true;
       select_field->wild_uri.table_name = (yyvsp[-2].string);
       (yyval.select_field) = select_field;
    }
#line 10989 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 234:
#line 2174 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
       auto* select_field = new_node(SelectField);
       select_field->location = parser->get_location((yylsp[-4]), (yyloc));
       select_field->wild_card = true;
       select_field->wild_uri.db_name = (yyvsp[-4].string);
       select_field->wild_uri.table_name = (yyvsp[-2].string);
       (yyval.select_field) = select_field;
    }
#line 11002 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 235:
#line 2183 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
       auto* select_field = new_node(SelectField);
       select_field->location = parser->get_location((yylsp[-6]), (yyloc));
       select_field->wild_card = true;
        select_field->wild_uri.ns_name = (yyvsp[-6].string);
       select_field->wild_uri.db_name = (yyvsp[-4].string);
       select_field->wild_uri.table_name = (yyvsp[-2].string);
       (yyval.select_field) = select_field;
    }
#line 11016 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 236:
#line 2193 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* select_field = new_node(SelectField);
        select_field->location = parser->get_location((yylsp[-1]), (yyloc));
        select_field->expr = (yyvsp[-1].expr);
        select_field->as_name = (yyvsp[0].string);
        if (select_field->expr->expr_type != cantor::pb::ast::ENT_RANGE_VAR
            && !select_field->expr->is_constant_expr()) {
            select_field->org_name.strdup((yylsp[-1]).start, (yylsp[-1]).end - (yylsp[-1]).start, parser->arena);
        }
        (yyval.select_field) = select_field;
    }
#line 11032 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 237:
#line 2204 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        auto* select_field = new_node(SelectField);
        select_field->location = parser->get_location((yylsp[-4]), (yyloc));
        select_field->expr = (yyvsp[-2].expr);
        select_field->as_name = (yyvsp[0].string);
        (yyval.select_field) = select_field;
    }
#line 11044 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 238:
#line 2214 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 11052 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 239:
#line 2217 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.string) = (yyvsp[0].string);
    }
#line 11060 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 240:
#line 2222 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 11068 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 241:
#line 2225 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.string) = (yyvsp[0].string);
    }
#line 11076 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 242:
#line 2228 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
    }
#line 11084 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 243:
#line 2231 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
    }
#line 11092 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 244:
#line 2237 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        auto sub_query = new_node(SubqueryExpr);
        sub_query->location = parser->get_location((yylsp[-2]), (yyloc));
        sub_query->query_stmt = (SelectStmt*)(yyvsp[-1].stmt);
        (yyval.expr) = sub_query;
    }
#line 11103 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 245:
#line 2243 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        auto sub_query = new_node(SubqueryExpr);
        sub_query->location = parser->get_location((yylsp[-2]), (yyloc));
        sub_query->query_stmt = (UnionStmt*)(yyvsp[-1].stmt);
        (yyval.expr) = sub_query;
    }
#line 11114 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 246:
#line 2249 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyval.expr) = (yyvsp[-1].expr);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 11123 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 247:
#line 2253 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        auto sub_query = new_node(SubqueryExpr);
        sub_query->location = parser->get_location((yylsp[-3]), (yyloc));
        SelectStmt* select = (SelectStmt*)(yyvsp[-1].stmt);
        select->with = (WithClause*)(yyvsp[-2].with_clause);
        sub_query->query_stmt = select;
        (yyval.expr) = sub_query;
    }
#line 11136 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 248:
#line 2261 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
        auto sub_query = new_node(SubqueryExpr);
        sub_query->location = parser->get_location((yylsp[-3]), (yyloc));
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-1].stmt);
        for (int i = 0; i < union_stmt->select_stmts.size(); ++i) {
            union_stmt->select_stmts[i]->with = (cantor::parser::WithClause*)(yyvsp[-2].with_clause);
        }
        sub_query->query_stmt = union_stmt;
        (yyval.expr) = sub_query;
    }
#line 11151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 249:
#line 2275 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                             {
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-6].stmt);
        union_stmt->location = parser->get_location((yylsp[-6]), (yyloc));
        if (!union_stmt->distinct) {
            union_stmt->distinct = (yyvsp[-4].integer);
        }
        union_stmt->select_stmts.push_back((SelectStmt*)(yyvsp[-3].stmt), parser->arena);
        union_stmt->order = (yyvsp[-2].order_by);
        union_stmt->limit = (yyvsp[-1].limit);        
        union_stmt->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = union_stmt;
    }
#line 11168 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 250:
#line 2287 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                   {
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-6].stmt);
        union_stmt->location = parser->get_location((yylsp[-6]), (yyloc));
        if (!union_stmt->distinct) {
            union_stmt->distinct = (yyvsp[-4].integer);
        }
        union_stmt->select_stmts.push_back((SelectStmt*)(yyvsp[-3].stmt), parser->arena);
        union_stmt->order = (yyvsp[-2].order_by);
        union_stmt->limit = (yyvsp[-1].limit);        
        union_stmt->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = union_stmt;
    }
#line 11185 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 251:
#line 2299 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                  {
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-8].stmt);
        union_stmt->location = parser->get_location((yylsp[-8]), (yyloc));
        if (!union_stmt->distinct) {
            union_stmt->distinct = (yyvsp[-6].integer);
        }
        SelectStmt* select = (SelectStmt*)(yyvsp[-4].stmt);
        select->is_in_braces = true;
        union_stmt->select_stmts.push_back(select, parser->arena);
        union_stmt->order = (yyvsp[-2].order_by);
        union_stmt->limit = (yyvsp[-1].limit);
        union_stmt->lock = (yyvsp[0].select_lock);
        (yyval.stmt) = union_stmt;
    }
#line 11204 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 252:
#line 2316 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        UnionStmt* union_stmt = new_node(UnionStmt);
        union_stmt->location = parser->get_location((yylsp[0]), (yyloc));
        union_stmt->select_stmts.push_back((SelectStmt*)(yyvsp[0].stmt), parser->arena);
        (yyval.stmt) = union_stmt;
    }
#line 11215 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 253:
#line 2322 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                 {
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[-3].stmt);
        union_stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        if (!union_stmt->distinct) {
            union_stmt->distinct = (yyvsp[-1].integer);
        }
        union_stmt->select_stmts.push_back((SelectStmt*)(yyvsp[0].stmt), parser->arena);
        (yyval.stmt) = union_stmt;
    }
#line 11229 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 254:
#line 2334 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.stmt) = (yyvsp[0].stmt);
    }
#line 11237 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 255:
#line 2337 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        SelectStmt* select = (SelectStmt*)(yyvsp[-1].stmt);
        select->location = parser->get_location((yylsp[-2]), (yyloc));
        select->is_in_braces = true;
        (yyval.stmt) = select;
    }
#line 11248 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 257:
#line 2351 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              { (yyval.expr) = (yyvsp[0].expr);}
#line 11254 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 258:
#line 2352 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  { (yyval.expr) = (yyvsp[0].expr);}
#line 11260 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 259:
#line 2354 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[0].expr)->location = parser->get_location((yylsp[0]), (yyloc));
        (yyval.expr) = (yyvsp[0].expr);
    }
#line 11269 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 260:
#line 2361 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
            (yyval.expr) = (yyvsp[0].expr);
        }
#line 11277 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 261:
#line 2365 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.expr) = (yyvsp[0].ctor_func_expr);
        }
#line 11285 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 262:
#line 2369 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            FuncExpr* fun = new_node(FuncExpr);
            fun->location = parser->get_location((yylsp[-2]), (yyloc));
            fun->fn_name = (yyvsp[-2].string);
            (yyval.expr) = fun;
        }
#line 11296 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 263:
#line 2376 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            FuncExpr* fun = new_node(FuncExpr);
            fun->location = parser->get_location((yylsp[-3]), (yyloc));
            fun->fn_name = (yyvsp[-3].string);
            fun->exprs = (yyvsp[-1].row_expr)->sub_exprs;
            (yyval.expr) = fun;
        }
#line 11308 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 264:
#line 2386 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* fun = new_node(CtorEnumFuncExpr);
            fun->location = parser->get_location((yylsp[-4]), (yyloc));
            fun->arg.location = parser->get_location((yylsp[-3]), (yyloc));
            fun->arg.uri = (yyvsp[-3].type_name_uri);
            fun->arg.field = nullptr;
            fun->arg.is_field = false;
            fun->arg.value = ((ConstantExpr*)(yyvsp[-1].int_const_expr))->_u.int64_val;
            (yyval.ctor_func_expr) = fun;
        }
#line 11323 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 265:
#line 2397 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* fun = new_node(CtorEnumFuncExpr);
            fun->location = parser->get_location((yylsp[-4]), (yyloc));
            fun->arg.location = parser->get_location((yylsp[-3]), (yyloc));
            fun->arg.uri = (yyvsp[-3].type_name_uri);
            fun->arg.is_field = true;
            fun->arg.field = ((ConstantExpr*)(yyvsp[-1].string_const_expr))->_u.str_val;
            (yyval.ctor_func_expr) = fun;
        }
#line 11337 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 266:
#line 2407 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
              auto* fun = new_node(CtorProtoFuncExpr);
              fun->location = parser->get_location((yylsp[-4]), (yyloc));
              fun->arg.uri = ((ConstantExpr*)(yyvsp[-3].string_const_expr))->_u.str_val;
              set_vector(fun->arg.values, (yyvsp[-1].dict_pair_list));
              (yyval.ctor_func_expr) = fun;
        }
#line 11349 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 267:
#line 2415 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorJsonFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].dict_pair_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11362 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 268:
#line 2424 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
              auto* fun = new_node(CtorStructFuncExpr);
              fun->location = parser->get_location((yylsp[-3]), (yyloc));
              fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
              set_vector(fun->arg.values, (yyvsp[-1].dict_pair_list));
              (yyval.ctor_func_expr) = fun;

        }
#line 11375 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 269:
#line 2433 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* fun = new_node(CtorMapFuncExpr);
            fun->location = parser->get_location((yylsp[-3]), (yyloc));
            fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
            set_vector(fun->arg.values, (yyvsp[-1].map_pair_list));
            (yyval.ctor_func_expr) = fun;

        }
#line 11388 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 270:
#line 2442 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorUnionFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg = (yyvsp[-1].dict_pair);
                (yyval.ctor_func_expr) = fun;

        }
#line 11400 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 271:
#line 2450 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorArrayFuncExpr);
                fun->location = parser->get_location((yylsp[-2]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-1]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].expr_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11413 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 272:
#line 2459 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorArrayFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].expr_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11426 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 273:
#line 2468 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorTupleFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].expr_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11439 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 274:
#line 2477 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorSetFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].expr_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11452 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 275:
#line 2486 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
                auto* fun = new_node(CtorJsonArrayFuncExpr);
                fun->location = parser->get_location((yylsp[-3]), (yyloc));
                fun->arg.location = parser->get_location((yylsp[-2]), (yyloc));
                set_vector(fun->arg.values, (yyvsp[-1].expr_list));
                (yyval.ctor_func_expr) = fun;

        }
#line 11465 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 276:
#line 2495 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
              auto* fun = new_node(CtorUdfFuncExpr);
              fun->location = parser->get_location((yylsp[-4]), (yyloc));
              fun->arg.location = parser->get_location((yylsp[-3]), (yyloc));
              fun->arg.uri = (yyvsp[-3].type_name_uri);
              auto sub_arg = new_node(DictArg);
              sub_arg->location = parser->get_location((yylsp[-1]));
              set_vector(sub_arg->values, (yyvsp[-1].dict_pair_list));
              fun->arg.set_arg(sub_arg);
              (yyval.ctor_func_expr) = fun;

        }
#line 11482 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 277:
#line 2508 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto* fun = new_node(CtorUdfFuncExpr);
            fun->location = parser->get_location((yylsp[-4]), (yyloc));
            fun->arg.location = parser->get_location((yylsp[-3]), (yyloc));
            fun->arg.uri = (yyvsp[-3].type_name_uri);
            auto sub_arg = new_node(ExprListArg);
            sub_arg->location = parser->get_location((yylsp[-1]));
            set_vector(sub_arg->values, (yyvsp[-1].expr_list));
            fun->arg.set_arg(sub_arg);
            (yyval.ctor_func_expr) = fun;

        }
#line 11499 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 278:
#line 2521 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
              auto* fun = new_node(CtorUdfFuncExpr);
              fun->location = parser->get_location((yylsp[-4]), (yyloc));
              fun->arg.location = parser->get_location((yylsp[-3]), (yyloc));
              fun->arg.uri = (yyvsp[-3].type_name_uri);
              auto sub_arg = new_node(MapArg);
              sub_arg->location = parser->get_location((yylsp[-1]));
              set_vector(sub_arg->values, (yyvsp[-1].map_pair_list));
              fun->arg.set_arg(sub_arg);
              (yyval.ctor_func_expr) = fun;

        }
#line 11516 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 282:
#line 2541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = nullptr;
    }
#line 11524 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 283:
#line 2544 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.expr) = (yyvsp[0].int_const_expr);        
    }
#line 11532 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 291:
#line 2559 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 292:
#line 2563 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11550 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 293:
#line 2567 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11559 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 294:
#line 2571 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11568 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 295:
#line 2575 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 296:
#line 2579 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11586 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 297:
#line 2583 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11595 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 298:
#line 2587 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11604 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 299:
#line 2591 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11613 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 300:
#line 2598 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11622 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 301:
#line 2602 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11631 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 302:
#line 2606 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11640 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 303:
#line 2610 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11649 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 304:
#line 2614 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11658 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 305:
#line 2618 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11667 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 306:
#line 2622 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11676 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 307:
#line 2626 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11685 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 308:
#line 2630 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11694 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 309:
#line 2634 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11703 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 310:
#line 2638 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11712 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 311:
#line 2642 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11721 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 312:
#line 2646 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11730 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 313:
#line 2650 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11739 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 314:
#line 2654 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11748 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 315:
#line 2658 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11757 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 316:
#line 2662 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11766 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 317:
#line 2666 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11775 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 318:
#line 2670 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11784 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 319:
#line 2674 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string).to_lower_inplace(), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11793 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 320:
#line 2681 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
         {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11802 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 321:
#line 2685 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11811 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 322:
#line 2689 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.expr) = ConstantExpr::make_string((yyvsp[0].string), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 11820 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 332:
#line 2708 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        if ((yyvsp[-1].expr) != nullptr) {
            fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        }
        (yyval.expr) = fun;
    }
#line 11834 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 333:
#line 2717 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[0]));
        fun->fn_name = (yyvsp[0].string);
        (yyval.expr) = fun; 
    }
#line 11845 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 334:
#line 2723 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun; 
    }
#line 11856 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 335:
#line 2729 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[0]));
        fun->fn_name = (yyvsp[0].string);
        (yyval.expr) = fun; 
    }
#line 11867 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 336:
#line 2735 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11879 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 337:
#line 2742 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                 {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;      
    }
#line 11892 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 338:
#line 2750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;         
    }
#line 11904 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 339:
#line 2757 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11916 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 340:
#line 2764 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11928 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 341:
#line 2771 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11940 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 342:
#line 2778 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11952 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 343:
#line 2785 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 11964 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 344:
#line 2792 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        if ((yyvsp[-1].expr) != nullptr) {
            fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        }
        (yyval.expr) = fun;
    }
#line 11978 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 345:
#line 2801 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun; 
    }
#line 11989 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 346:
#line 2807 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].int_const_expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12001 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 347:
#line 2814 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun;
    }
#line 12012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 348:
#line 2820 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].int_const_expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12024 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 349:
#line 2827 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                 {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs = (yyvsp[-1].row_expr)->sub_exprs;
        (yyval.expr) = fun;
    }
#line 12036 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 350:
#line 2834 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                            {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        ConstantExpr* day_expr = ConstantExpr::make_string("DAY", parser->arena);
        fun->exprs.push_back(day_expr, parser->arena);
        (yyval.expr) = fun;
    }
#line 12051 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 351:
#line 2844 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = (yyvsp[-7].string);
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-2].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12065 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 352:
#line 2853 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = (yyvsp[-7].string);
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-2].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12079 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 353:
#line 2862 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_date";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12091 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 354:
#line 2869 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_date";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12103 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 355:
#line 2876 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_datetime";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12115 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 356:
#line 2883 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_datetime";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12127 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 357:
#line 2890 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_time";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12139 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 358:
#line 2897 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_time";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 359:
#line 2920 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                             {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->fn_name = "cast_to_signed";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12163 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 360:
#line 2927 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_signed";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12175 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 361:
#line 2934 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->fn_name = "cast_to_signed";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12187 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 362:
#line 2941 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_signed";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12199 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 363:
#line 2948 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                               {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->fn_name = "cast_to_unsigned";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12211 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 364:
#line 2955 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                       {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_unsigned";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12223 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 365:
#line 2962 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->fn_name = "cast_to_unsigned";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12235 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 366:
#line 2969 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_unsigned";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12247 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 367:
#line 2976 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_string";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12259 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 368:
#line 2983 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_string";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12271 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 369:
#line 2990 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                       {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_double";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12283 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 370:
#line 2997 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "cast_to_double";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12295 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 371:
#line 3004 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun; 
    }
#line 12306 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 372:
#line 3010 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun; 
    }
#line 12317 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 373:
#line 3016 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = (yyvsp[-2].string);
        (yyval.expr) = fun; 
    }
#line 12328 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 374:
#line 3022 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12341 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 375:
#line 3030 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12354 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 376:
#line 3038 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "substr";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12367 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 377:
#line 3046 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "substr";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12380 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 378:
#line 3054 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = "substr";
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12394 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 379:
#line 3063 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                            {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = "substr";
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12408 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 380:
#line 3072 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                           {
        FuncExpr* fun = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_COMMON, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = (yyvsp[-7].string);
        (yyval.expr) = fun;
    }
#line 12419 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 381:
#line 3078 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                            {
        FuncExpr* fun = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_COMMON, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = "timestampdiff";
        (yyval.expr) = fun;
    }
#line 12430 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 382:
#line 3084 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12442 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 383:
#line 3091 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12455 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 384:
#line 3099 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = (yyvsp[-5].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        fun->exprs.push_back(nullptr, parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12469 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 385:
#line 3108 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->fn_name = (yyvsp[-6].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12483 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 386:
#line 3117 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "mod";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12496 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 387:
#line 3125 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "format";
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12509 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 388:
#line 3133 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                     {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-9]), (yyloc));
        fun->fn_name = "insert";
        fun->exprs.push_back((yyvsp[-7].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12524 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 389:
#line 3143 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = "ascii";
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12536 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 390:
#line 3150 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = "string";
        fun->exprs = (yyvsp[-1].row_expr)->sub_exprs;
        (yyval.expr) = fun;
    }
#line 12548 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 391:
#line 3159 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = "values";
        fun->func_type = cantor::pb::ast::FT_VALUES;
        fun->exprs.push_back((yyvsp[-1].range_var), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12561 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 392:
#line 3167 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                 {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "left";
        fun->func_type = cantor::pb::ast::FT_COMMON;
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12575 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 393:
#line 3176 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-5]), (yyloc));
        fun->fn_name = "right";
        fun->func_type = cantor::pb::ast::FT_COMMON;
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12589 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 394:
#line 3185 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                             {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = "replace";
        fun->func_type = cantor::pb::ast::FT_COMMON;
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12604 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 395:
#line 3195 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-7]), (yyloc));
        fun->fn_name = "if";
        fun->func_type = cantor::pb::ast::FT_COMMON;
        fun->exprs.push_back((yyvsp[-5].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-3].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12619 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 396:
#line 3205 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = "database";
        (yyval.expr) = fun;
    }
#line 12630 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 397:
#line 3211 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = "default";
        fun->exprs.push_back((yyvsp[-1].range_var), parser->arena);
        (yyval.expr) = fun;
    }
#line 12642 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 398:
#line 3218 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[0]), (yyloc));
        fun->fn_name = "current_timestamp";
        (yyval.expr) = fun;
    }
#line 12653 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 399:
#line 3224 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                       {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->fn_name = "current_timestamp";
        (yyval.expr) = fun;
    }
#line 12664 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 400:
#line 3230 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->fn_name = "current_timestamp";
        fun->exprs.push_back((yyvsp[-1].int_const_expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12676 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 401:
#line 3239 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                 {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = (yyvsp[-2].integer);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;    
    }
#line 12690 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 402:
#line 3248 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12704 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 403:
#line 3257 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               { 
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12718 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 404:
#line 3266 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12732 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 405:
#line 3275 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun; 
    }
#line 12746 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 406:
#line 3284 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12760 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 407:
#line 3293 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12774 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 408:
#line 3302 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = true;
        fun->exprs = (yyvsp[-1].row_expr)->sub_exprs;
        (yyval.expr) = fun;
    }
#line 12788 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 409:
#line 3311 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                             {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12802 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 410:
#line 3320 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->distinct = false;
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12816 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 411:
#line 3329 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->distinct = false; 
        fun->is_star = true;
        (yyval.expr) = fun;
    }
#line 12830 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 412:
#line 3338 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = (yyvsp[-2].integer);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12844 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 413:
#line 3347 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = (yyvsp[-2].integer);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12858 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 414:
#line 3356 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                    {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-4].string);
        fun->distinct = (yyvsp[-2].integer);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12872 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 415:
#line 3365 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                              {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-6]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-6].string);
        fun->distinct = (yyvsp[-4].integer);
        fun->exprs.push_back((RowExpr*)(yyvsp[-3].row_expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        if ((yyvsp[-2].order_by) != nullptr && (yyvsp[-2].order_by)->items.size() > 0) {
            auto by_expr_row = new_node(RowExpr);
            auto is_desc_row = new_node(RowExpr);
            for (int i = 0; i < (yyvsp[-2].order_by)->items.size(); i++) {
                by_expr_row->sub_exprs.push_back((yyvsp[-2].order_by)->items[i]->expr, parser->arena);
                ConstantExpr* is_desc = nullptr;
                if ((yyvsp[-2].order_by)->items[i]->is_desc) {
                    is_desc = ConstantExpr::make_true(parser->arena);
                } else {
                    is_desc = ConstantExpr::make_false(parser->arena);
                }
                is_desc_row->sub_exprs.push_back(is_desc, parser->arena);
            }
            fun->exprs.push_back(by_expr_row, parser->arena);
            fun->exprs.push_back(is_desc_row, parser->arena);
        }
        (yyval.expr) = fun;
    }
#line 12903 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 416:
#line 3391 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->func_type = cantor::pb::ast::FT_AGG;
        fun->fn_name = (yyvsp[-3].string);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 12916 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 417:
#line 3402 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_string(",", parser->arena);
    }
#line 12924 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 418:
#line 3405 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
        (yyval.expr) = (yyvsp[0].string_const_expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 12933 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 421:
#line 3417 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
        (yyval.integer) = false;
    }
#line 12941 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 422:
#line 3420 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.integer) = true;
    }
#line 12949 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 423:
#line 3426 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 12957 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 425:
#line 3433 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = true;
    }
#line 12965 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 428:
#line 3441 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.integer) = true;
    }
#line 12973 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 429:
#line 3447 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {}
#line 12979 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 639:
#line 3662 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
    }
#line 12986 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 640:
#line 3664 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
    }
#line 12993 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 641:
#line 3669 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.expr) = ConstantExpr::make_null(parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 13002 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 642:
#line 3673 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.expr) = ConstantExpr::make_true(parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 13011 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 643:
#line 3677 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.expr) = ConstantExpr::make_false(parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 13020 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 644:
#line 3681 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
    }
#line 13027 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 645:
#line 3683 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
    }
#line 13034 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 646:
#line 3685 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.expr) = (yyvsp[0].string_const_expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13043 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 647:
#line 3689 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        (yyval.expr) = (yyvsp[0].string_const_expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13052 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 648:
#line 3696 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
    }
#line 13059 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 649:
#line 3698 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
    }
#line 13066 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 650:
#line 3700 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        if((yyvsp[0].indirection_list)) {
            set_vector((yyvsp[-1].range_var)->indirections, (yyvsp[0].indirection_list));
        }
        (yyvsp[-1].range_var)->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.expr) = (yyvsp[-1].range_var);
    }
#line 13078 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 651:
#line 3707 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
    }
#line 13085 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 652:
#line 3710 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto func = (FuncExpr*)(yyvsp[-1].expr);
        set_vector(func->indirections, (yyvsp[0].indirection_list));
        (yyvsp[-1].expr)->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.expr) = (yyvsp[-1].expr);
    }
#line 13096 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 653:
#line 3716 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                { 
    }
#line 13103 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 654:
#line 3718 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        ExistsSubqueryExpr*  exists_expr = new_node(ExistsSubqueryExpr);
        exists_expr->location = parser->get_location((yylsp[-1]), (yyloc));
        exists_expr->query_expr = (SubqueryExpr*)(yyvsp[0].expr);
        (yyval.expr) = exists_expr;
    }
#line 13114 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 655:
#line 3724 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        (yyval.expr) = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_UMINUS, (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13123 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 656:
#line 3728 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               { 
        (yyval.expr) = (yyvsp[0].expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13132 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 657:
#line 3732 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        if ((yyvsp[0].expr)->is_exists_subquery_expr()) {
            ExistsSubqueryExpr* exists_expr = (ExistsSubqueryExpr*)(yyvsp[0].expr);
            exists_expr->is_not = true;
            exists_expr->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.expr) = exists_expr;
        } else {
            (yyval.expr) = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_LOGIC_NOT, (yyvsp[0].expr), parser->arena);
            (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
    }
#line 13148 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 658:
#line 3743 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        if ((yyvsp[0].expr)->is_exists_subquery_expr()) {
            ExistsSubqueryExpr* exists_expr = (ExistsSubqueryExpr*)(yyvsp[0].expr);
            exists_expr->is_not = true;
            (yyval.expr) = exists_expr;
            (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
        } else {
            (yyval.expr) = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_LOGIC_NOT, (yyvsp[0].expr), parser->arena);
            (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
    }
#line 13164 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 659:
#line 3754 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                                {
        auto row = new_node(RowExpr);
        set_vector(row->columns, (yyvsp[-6].range_var_list));
        (yyval.expr) = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_MATCH_AGAINST, row, (yyvsp[-2].expr), (yyvsp[-1].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-8]), (yyloc));
    }
#line 13175 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 660:
#line 3760 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        (yyval.expr) = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_BIT_NOT, (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13184 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 661:
#line 3764 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                        {
        if((yyvsp[0].indirection_list)) {
            if((yyvsp[-2].expr)->is_func_expr()) {
                auto func = (FuncExpr*)(yyvsp[-2].expr);
                set_vector(func->indirections, (yyvsp[0].indirection_list));
            } else if((yyvsp[-2].expr)->is_rang_var()) {
                auto var = (RangeVar*)(yyvsp[-2].expr);
                set_vector(var->indirections, (yyvsp[0].indirection_list));
            }else {
                sql_error(&(yylsp[-2]), yyscanner, parser, "only func expr or column can follow by indirection");
                return -1;
            }
        }
        (yyvsp[-2].expr)->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.expr) = (yyvsp[-2].expr);

    }
#line 13206 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 662:
#line 3781 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        auto* fun = new_node(FuncCaseWhenClause);
        (yyvsp[-1].when_clause)->case_expr = (yyvsp[-2].expr);
        fun->when_clause = (yyvsp[-1].when_clause);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.expr) = fun;
    }
#line 13218 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 663:
#line 3788 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        auto* fun = new_node(FuncWhenClause);
        fun->when_clause = (yyvsp[-1].when_clause);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.expr) = fun;
    }
#line 13229 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 664:
#line 3797 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_string("IN NATURAL LANGUAGE MODE", parser->arena);
    }
#line 13237 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 665:
#line 3800 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        (yyval.expr) = ConstantExpr::make_string("IN NATURAL LANGUAGE MODE", parser->arena);
         (yyval.expr)->location = parser->get_location((yylsp[-3]), (yyloc));
    }
#line 13246 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 666:
#line 3804 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.expr) = ConstantExpr::make_string("IN BOOLEAN MODE", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13255 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 667:
#line 3808 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        (yyval.expr) = ConstantExpr::make_string("IN VECTOR MODE", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13264 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 668:
#line 3815 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto node = new_node(WhenClause);
        node->location = parser->get_location((yylsp[-1]), (yyloc));
        set_vector(node->when_clauses, (yyvsp[-1].when_clause_case_list));
        node->else_expr = (yyvsp[0].expr);
        (yyval.when_clause) = node;
    }
#line 13276 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 669:
#line 3825 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.when_clause_case_list) = append_vector<WhenClauseCase*>(nullptr, (yyvsp[0].when_clause_case), parser->arena);
    }
#line 13284 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 670:
#line 3828 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        (yyval.when_clause_case_list) = append_vector<WhenClauseCase*>((yyvsp[-1].when_clause_case_list), (yyvsp[0].when_clause_case), parser->arena);
    }
#line 13292 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 671:
#line 3833 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        auto node = new_node(WhenClauseCase);
        node->location = parser->get_location((yylsp[-3]), (yyloc));
        node->when_expr= (yyvsp[-2].expr);
        node->then_expr =(yyvsp[0].expr);
        (yyval.when_clause_case) = node;
    }
#line 13304 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 672:
#line 3842 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = nullptr;
    }
#line 13312 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 673:
#line 3845 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.expr) = (yyvsp[0].expr);
    }
#line 13320 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 674:
#line 3851 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyval.expr) = (yyvsp[0].expr);
    }
#line 13328 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 675:
#line 3854 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_ADD, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13337 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 676:
#line 3858 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_MINUS, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13346 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 677:
#line 3862 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->fn_name = "date_add";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        fun->exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 13360 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 678:
#line 3871 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        FuncExpr* fun = new_node(FuncExpr);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->fn_name = "date_sub";
        fun->exprs.push_back((yyvsp[-4].expr), parser->arena);
        fun->exprs.push_back((yyvsp[-1].expr), parser->arena);
        fun->exprs.push_back((yyvsp[0].expr), parser->arena);
        (yyval.expr) = fun;
    }
#line 13374 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 679:
#line 3880 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_MULTIPLIES, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13383 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 680:
#line 3884 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_DIVIDES, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13392 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 681:
#line 3888 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_MOD, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13401 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 682:
#line 3892 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_MOD, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13410 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 683:
#line 3896 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_LS, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13419 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 684:
#line 3900 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_RS, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13428 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 685:
#line 3904 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_BIT_AND, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13437 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 686:
#line 3908 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_BIT_OR, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13446 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 687:
#line 3912 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_BIT_XOR, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13455 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 688:
#line 3916 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        (yyval.expr) = FuncExpr::new_binary_op_node((cantor::pb::ast::FuncType)(yyvsp[-1].integer), (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13464 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 689:
#line 3920 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_LOGIC_AND, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13473 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 690:
#line 3924 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_LOGIC_OR, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13482 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 691:
#line 3928 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_LOGIC_XOR, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13491 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 692:
#line 3932 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.expr) = (yyvsp[0].expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13500 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 693:
#line 3936 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
        (yyval.expr) = (yyvsp[-2].expr);
        (yyval.expr)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 13509 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 694:
#line 3943 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.integer) = cantor::pb::ast::FT_GE;
    }
#line 13517 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 695:
#line 3946 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::FT_GT;
    }
#line 13525 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 696:
#line 3949 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::FT_LE;
    }
#line 13533 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 697:
#line 3952 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::FT_LT;
    }
#line 13541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 698:
#line 3955 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::FT_NE;
    }
#line 13549 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 699:
#line 3958 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = cantor::pb::ast::FT_EQ;
    }
#line 13557 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 700:
#line 3964 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                  {
        CompareSubqueryExpr* comp_sub_query = new_node(CompareSubqueryExpr);
        comp_sub_query->location = parser->get_location((yylsp[-3]), (yyloc));
        comp_sub_query->left_expr = (yyvsp[-3].expr);
        comp_sub_query->func_type = (cantor::pb::ast::FuncType)(yyvsp[-2].integer);
        comp_sub_query->cmp_type = (cantor::pb::ast::CompareType)(yyvsp[-1].integer);
        comp_sub_query->right_expr = (SubqueryExpr*)(yyvsp[0].expr);
        (yyval.expr) = comp_sub_query;
    }
#line 13571 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 701:
#line 3975 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        FuncExpr* fun = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_IS_NULL, (yyvsp[-2].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13582 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 702:
#line 3981 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                 {
        FuncExpr* fun = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_IS_TRUE, (yyvsp[-2].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13593 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 703:
#line 3987 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        FuncExpr* fun = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_IS_TRUE, (yyvsp[-2].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = !(yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13604 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 704:
#line 3993 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FuncExpr* fun = FuncExpr::new_unary_op_node(cantor::pb::ast::FT_IS_UNKNOWN, (yyvsp[-2].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13615 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 705:
#line 3999 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_IN, (yyvsp[-4].expr), (yyvsp[-1].row_expr), parser->arena);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->is_not = (yyvsp[-3].integer);
        (yyval.expr) = fun;
    }
#line 13626 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 706:
#line 4005 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_IN, (yyvsp[-4].expr), (yyvsp[-1].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->is_not = (yyvsp[-3].integer);
        (yyval.expr) = fun;
    }
#line 13637 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 707:
#line 4011 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        FuncExpr* fun = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_IN, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13648 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 708:
#line 4017 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                            {
        FuncExpr* fun = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_IN, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13659 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 709:
#line 4029 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                               {
        FuncExpr* fun = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_LIKE, (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        fun->is_not = (yyvsp[-2].integer);
        (yyval.expr) = fun;
    }
#line 13670 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 710:
#line 4035 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                {
        FuncExpr* fun = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_EXACT_LIKE, (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.expr) = fun;
    }
#line 13680 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 711:
#line 4040 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                   {
        FuncExpr* fun = FuncExpr::new_binary_op_node(cantor::pb::ast::FT_REGEXP, (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-2]), (yyloc));
        fun->is_not = (yyvsp[-1].integer);
        (yyval.expr) = fun;
    }
#line 13691 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 712:
#line 4046 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                        {
        FuncExpr* fun = FuncExpr::new_ternary_op_node(cantor::pb::ast::FT_BETWEEN, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr), parser->arena);
        fun->location = parser->get_location((yylsp[-4]), (yyloc));
        fun->is_not = (yyvsp[-3].integer);
        (yyval.expr) = fun;
    }
#line 13702 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 713:
#line 4054 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
       {
        (yyval.integer) = false;
    }
#line 13710 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 714:
#line 4057 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.integer) = true;
    }
#line 13718 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 715:
#line 4062 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
       {
        (yyval.integer) = false;
    }
#line 13726 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 716:
#line 4065 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.integer) = true;
    }
#line 13734 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 717:
#line 4070 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
        (yyval.integer) = cantor::pb::ast::CMP_ANY;
    }
#line 13742 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 718:
#line 4073 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.integer) = cantor::pb::ast::CMP_SOME;
    }
#line 13750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 719:
#line 4076 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
          {
        (yyval.integer) = cantor::pb::ast::CMP_ALL;
    }
#line 13758 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 720:
#line 4081 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
         {
        (yyval.integer) = false;
    }
#line 13766 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 721:
#line 4084 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.integer) = true;
    }
#line 13774 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 722:
#line 4089 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_string("'\\'", parser->arena);
    }
#line 13782 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 723:
#line 4092 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        (yyval.expr) = (yyvsp[0].string_const_expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 13791 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 724:
#line 4098 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.integer) = false;
    }
#line 13799 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 725:
#line 4101 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = false;
    }
#line 13807 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 726:
#line 4104 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.integer) = true;
    }
#line 13815 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 727:
#line 4107 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.integer) = true;
    }
#line 13823 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 728:
#line 4112 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.integer) = false;
    }
#line 13831 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 729:
#line 4115 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        (yyval.integer) = true;
    }
#line 13839 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 730:
#line 4125 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        CreateTableStmt* stmt = new_node(CreateTableStmt);
        stmt->location = parser->get_location((yylsp[-7]), (yyloc));
        stmt->if_not_exist = (yyvsp[-5].integer);
        stmt->table_name = (yyvsp[-4].table_name);
        stmt->set_def_element((yyvsp[-2].table_def_element_list), parser->arena);
        set_vector(stmt->options, (yyvsp[0].table_option_list));
        (yyval.stmt) = stmt;
    }
#line 13853 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 731:
#line 4137 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 13861 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 732:
#line 4141 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = true;
    }
#line 13869 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 733:
#line 4147 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 13877 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 734:
#line 4151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = true;
    }
#line 13885 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 735:
#line 4157 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_def_element_list) = nullptr;
    }
#line 13893 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 736:
#line 4161 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_def_element_list) = (yyvsp[0].table_def_element_list);
    }
#line 13901 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 737:
#line 4167 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        Vector<TableDefElement*>* list;
        if ((yyvsp[0].table_def_element) != nullptr) {
            list = append_vector<TableDefElement*>(nullptr, (yyvsp[0].table_def_element), parser->arena, 10);
        } else {
            list = append_vector<TableDefElement*>(nullptr,parser->arena, 10);
        }
        (yyval.table_def_element_list) = list;
    }
#line 13915 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 738:
#line 4177 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].table_def_element) != nullptr) {
            (yyvsp[-2].table_def_element_list)->push_back((yyvsp[0].table_def_element), parser->arena);
        }
        (yyval.table_def_element_list) = (yyvsp[-2].table_def_element_list);
    }
#line 13926 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 739:
#line 4187 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto n = new_node(TableDefElement);
        n->location = parser->get_location((yylsp[0]));
        n->column = (yyvsp[0].column_def);
        (yyval.table_def_element) = n;
    }
#line 13937 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 740:
#line 4194 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto n = new_node(TableDefElement);
        n->location = parser->get_location((yylsp[0]));
        n->constrain = (yyvsp[0].constraint);
        (yyval.table_def_element) = n;
    }
#line 13948 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 741:
#line 4204 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnDef* column = new_node(ColumnDef);
        column->location = parser->get_location((yylsp[-2]), (yyloc));
        column->name = (yyvsp[-2].column_name);
        column->type_name = (yyvsp[-1].type_name);
        set_vector(column->options, (yyvsp[0].column_option_list));
        (yyval.column_def) = column;
    }
#line 13961 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 742:
#line 4216 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        Vector<ColumnDef*>* vec;
        if ((yyvsp[0].column_def) != nullptr) {
            vec = append_vector<ColumnDef*>(nullptr, (yyvsp[0].column_def), parser->arena);
        } else {
            vec = append_vector<ColumnDef*>(nullptr, parser->arena);
        }
        (yyval.column_def_list) = vec;
    }
#line 13975 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 743:
#line 4226 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].column_def) != nullptr) {
            append_vector<>((yyvsp[-2].column_def_list), (yyvsp[0].column_def), parser->arena);
        }
        (yyval.column_def_list) = (yyvsp[-2].column_def_list);
    }
#line 13986 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 744:
#line 4235 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        /// guard that ColumnOptionList cnot nullptr
        //$$ = append_vector<ColumnOption*>(nullptr, parser->arena);
        (yyval.column_option_list) = nullptr;
    }
#line 13996 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 745:
#line 4241 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
         (yyval.column_option_list) = append_vector<ColumnOption*>(nullptr, (yyvsp[0].column_option), parser->arena);
    }
#line 14004 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 746:
#line 4245 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.column_option_list) = append_vector<ColumnOption*>((yyvsp[-1].column_option_list), (yyvsp[0].column_option), parser->arena);
    }
#line 14012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 747:
#line 4252 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_NOT_NULL;
        (yyval.column_option) = option;
    }
#line 14023 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 748:
#line 4259 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[0]));
        option->type = cantor::pb::ast::COLUMN_OPT_NULL;
        (yyval.column_option) = option;
    }
#line 14034 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 749:
#line 4266 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[0]));
        option->type = cantor::pb::ast::COLUMN_OPT_AUTO_INC;
        (yyval.column_option) = option;
    }
#line 14045 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 750:
#line 4273 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_PRIMARY_KEY;
        (yyval.column_option) = option;
    }
#line 14056 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 751:
#line 4280 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[0]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_UNIQ_KEY;
        (yyval.column_option) = option;
    }
#line 14067 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 752:
#line 4287 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_UNIQ_KEY;
        (yyval.column_option) = option;
    }
#line 14078 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 753:
#line 4294 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_DEFAULT_VAL;
        option->expr = (yyvsp[0].expr);
        (yyval.column_option) = option;
    }
#line 14090 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 754:
#line 4302 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-3]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_CHECK;
        option->expr = (yyvsp[-1].expr);
        (yyval.column_option) = option;
    }
#line 14102 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 755:
#line 4310 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FuncExpr* current_timestamp = new_node(FuncExpr);
        current_timestamp->location = parser->get_location((yylsp[0]));
        current_timestamp->func_type = cantor::pb::ast::FT_COMMON;
        current_timestamp->fn_name = "current_timestamp";
        ColumnOption* option = new_node(ColumnOption);
        option->type = cantor::pb::ast::COLUMN_OPT_ON_UPDATE;
        option->expr = current_timestamp;
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.column_option) = option;
    }
#line 14118 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 756:
#line 4322 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_COMMENT;
        (yyvsp[0].string_const_expr)->location = parser->get_location((yylsp[0]));
        option->expr = (yyvsp[0].string_const_expr);
        (yyval.column_option) = option;
    }
#line 14131 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 757:
#line 4331 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ColumnOption* option = new_node(ColumnOption);
        option->location = parser->get_location((yylsp[-1]), (yyloc));
        option->type = cantor::pb::ast::COLUMN_OPT_COLLATE;
        option->expr = ConstantExpr::make_string((yyvsp[0].string), parser->arena);
        option->expr->location = parser->get_location((yylsp[0]));
        (yyval.column_option) = option;
    }
#line 14144 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 758:
#line 4342 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {}
#line 14150 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 759:
#line 4343 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        (yyval.expr) = (yyvsp[0].expr);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 14159 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 760:
#line 4348 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ConstantExpr* literal = (ConstantExpr*)(yyvsp[0].expr);
        if (literal->literal_type == cantor::pb::ast::CET_INT) {
            literal->_u.int64_val = 0 - literal->_u.int64_val;
        } else {
            literal->_u.double_val = 0 - literal->_u.double_val;
        }
        (yyval.expr) = literal;
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 14174 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 761:
#line 4362 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FuncExpr* current_timestamp = new_node(FuncExpr);
        current_timestamp->location = parser->get_location((yylsp[0]));
        current_timestamp->func_type = cantor::pb::ast::FT_COMMON;
        current_timestamp->fn_name = "current_timestamp";
        (yyval.expr) = (DispatchExpr*)current_timestamp;
    }
#line 14186 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 762:
#line 4370 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = (yyvsp[0].expr);
    }
#line 14194 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 771:
#line 4388 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 14200 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 773:
#line 4393 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 14206 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 775:
#line 4399 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if (!(yyvsp[-1].string).empty()) {
            ((Constraint*)(yyvsp[0].constraint))->name = (yyvsp[-1].string);
        }
        (yyval.constraint) = (yyvsp[0].constraint);
    }
#line 14217 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 776:
#line 4408 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 14225 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 777:
#line 4412 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 14233 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 778:
#line 4416 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 14241 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 779:
#line 4423 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-6]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_PRIMARY;
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-4].index_type), parser->arena);
        item->index_option = op;
        (yyval.constraint) = item;
    }
#line 14255 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 780:
#line 4433 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-6]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_FULLTEXT;
        item->name = (yyvsp[-4].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        item->index_option = (yyvsp[0].index_option);
        (yyval.constraint) = item;
    }
#line 14269 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 781:
#line 4443 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-6]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_VECTOR;
        item->name = (yyvsp[-4].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        item->index_option = (yyvsp[0].index_option);
        (yyval.constraint) = item;
    }
#line 14283 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 782:
#line 4453 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-6]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_INDEX;
        item->name = (yyvsp[-5].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-4].index_type), parser->arena);
        item->index_option = op;
        (yyval.constraint) = item;
    }
#line 14298 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 783:
#line 4464 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-7]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_UNIQ;
        item->name = (yyvsp[-5].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-4].index_type), parser->arena);
        item->index_option = op;
        (yyval.constraint) = item;
    }
#line 14313 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 784:
#line 4475 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-7]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_INDEX;
        item->index_dist = (yyvsp[-6].index_distribute_type);
        item->name = (yyvsp[-5].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-4].index_type), parser->arena);
        item->index_option = op;
        (yyval.constraint) = item;
    }
#line 14329 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 785:
#line 4487 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-8]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_UNIQ;
        item->index_dist = (yyvsp[-6].index_distribute_type);
        item->name = (yyvsp[-5].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-4].index_type), parser->arena);
        item->index_option = op;
        (yyval.constraint) = item;
    }
#line 14345 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 786:
#line 4499 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-6]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_ROLLUP;
        item->name = (yyvsp[-4].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        item->index_option = (yyvsp[0].index_option);
        (yyval.constraint) = item;
    }
#line 14359 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 787:
#line 4509 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* item = new_node(Constraint);
        item->location = parser->get_location((yylsp[-3]), (yyloc));
        item->type = cantor::pb::ast::CONSTRAINT_CHECK;
        item->check_expr = (yyvsp[-1].expr);
        (yyval.constraint) = item;
    }
#line 14371 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 788:
#line 4520 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_distribute_type) = cantor::pb::ast::INDEX_DIST_GLOBAL;
    }
#line 14379 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 789:
#line 4524 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_distribute_type) = cantor::pb::ast::INDEX_DIST_LOCAL;
    }
#line 14387 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 790:
#line 4530 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_distribute_type) = cantor::pb::ast::INDEX_DIST_DEFAULT;
    }
#line 14395 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 791:
#line 4534 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_distribute_type) = (yyvsp[0].index_distribute_type);
    }
#line 14403 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 792:
#line 4541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 14411 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 793:
#line 4547 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_option) = nullptr;
    }
#line 14419 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 794:
#line 4550 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        auto node  = merge_index_option((yyvsp[-1].index_option), (yyvsp[0].index_option));
        node->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.index_option) = node;
    }
#line 14429 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 795:
#line 4558 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                 {
        auto node = new_node(AlgorithmOpt);
        node->location = parser->get_location((yylsp[-2]), (yyloc));
        node->algo = (yyvsp[0].string_const_expr);
        (yyval.algorighm_opt) = node;
    }
#line 14440 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 796:
#line 4568 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto node = new_node(IndexLockOpt);
        node->location = parser->get_location((yylsp[-2]), (yyloc));
        node->lock_mode = (yyvsp[0].string_const_expr);
        (yyval.index_lock_opt) = node;
    }
#line 14451 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 797:
#line 4577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_option) = nullptr;
    }
#line 14459 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 798:
#line 4581 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {

       (yyval.index_option) = nullptr;
    }
#line 14468 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 799:
#line 4586 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_option) = nullptr;
    }
#line 14476 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 800:
#line 4592 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                     {
        (yyval.index_option) = nullptr;
    }
#line 14484 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 801:
#line 4595 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        IndexOption* op = new_node(IndexOption);
        op->location = parser->get_location((yylsp[0]));
        op->index_type = (yyvsp[0].index_type);
        (yyval.index_option) = op;
    }
#line 14495 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 802:
#line 4601 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        IndexOption* op = new_node(IndexOption);
        op->location = parser->get_location((yylsp[-1]), (yyloc));
        op->comment = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.index_option) = op;
    }
#line 14506 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 803:
#line 4607 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                   {

        IndexOption* op = new_node(IndexOption);
        op->location = parser->get_location((yylsp[0]));
        op->algo = (yyvsp[0].algorighm_opt);
        (yyval.index_option) = op;
    }
#line 14518 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 804:
#line 4615 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        IndexOption* op = new_node(IndexOption);
        op->location = parser->get_location((yylsp[0]));
        op->lock = (yyvsp[0].index_lock_opt);
        (yyval.index_option) = op;
    }
#line 14529 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 805:
#line 4624 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.index_type) = cantor::pb::ast::INDEX_BTREE;
    }
#line 14537 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 806:
#line 4627 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.index_type) = cantor::pb::ast::INDEX_HASH;
    }
#line 14545 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 807:
#line 4633 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.index_type) = cantor::pb::ast::INDEX_NONE;
    }
#line 14553 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 808:
#line 4636 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.index_type) = (yyvsp[0].index_type);
    }
#line 14561 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 811:
#line 4647 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_option_list) = nullptr;
    }
#line 14569 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 812:
#line 4651 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_option_list) = (yyvsp[0].table_option_list);
    }
#line 14577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 813:
#line 4658 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_option_list) = append_vector<TableOption*>(nullptr, (yyvsp[0].table_option), parser->arena, 10);
    }
#line 14585 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 814:
#line 4662 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].table_option) != nullptr) {
            (yyvsp[-1].table_option_list)->push_back((yyvsp[0].table_option), parser->arena);
        }
        (yyval.table_option_list) = (yyvsp[-1].table_option_list);
    }
#line 14596 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 815:
#line 4669 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].table_option) != nullptr) {
            (yyvsp[-2].table_option_list)->push_back((yyvsp[0].table_option), parser->arena);
        }
        (yyval.table_option_list) = (yyvsp[-2].table_option_list);
    }
#line 14607 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 816:
#line 4679 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_ENGINE;
        option->str_value = (yyvsp[0].string);
        (yyval.table_option) = option;
    }
#line 14619 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 817:
#line 4687 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-3]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_CHARSET;
        option->str_value = (yyvsp[0].string);
        (yyval.table_option) = option;
    }
#line 14631 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 818:
#line 4695 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-3]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_COLLATE;
        option->str_value = (yyvsp[0].string);
        (yyval.table_option) = option;
    }
#line 14643 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 819:
#line 4703 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_AUTO_INC;
        option->uint_value = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.table_option) = option;
    }
#line 14655 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 820:
#line 4711 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_COMMENT;
        option->str_value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.table_option) = option;
    }
#line 14667 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 821:
#line 4719 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_AVG_ROW_LENGTH;
        option->uint_value = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.table_option) = option;
    }
#line 14679 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 822:
#line 4727 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_KEY_BLOCK_SIZE;
        option->uint_value = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.table_option) = option;
    }
#line 14691 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 823:
#line 4734 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                              {
        TableOption* option = new_node(TableOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_DYNAMIC_PARTITION_ATTR;
        option->str_value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.table_option) = option;
    }
#line 14703 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 824:
#line 4742 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TableOption* option = new_node(TableOption);
        option->partition = (yyvsp[0].table_partition_option);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::TABLE_OPT_PARTITION;
        (yyval.table_option) = option;
    }
#line 14715 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 825:
#line 4750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.table_option) = nullptr;
    }
#line 14723 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 826:
#line 4757 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        PartitionOption* option = new_node(PartitionOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::PARTITION_OPT_COMMENT;
        option->str_value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.partition_option) = option;
    }
#line 14735 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 827:
#line 4768 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.partition_option_list) = append_vector<PartitionOption*>(nullptr, (yyvsp[0].partition_option), parser->arena, 10);
    }
#line 14743 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 828:
#line 4772 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-1].partition_option_list)->push_back((yyvsp[0].partition_option), parser->arena);
        (yyval.partition_option_list) = (yyvsp[-1].partition_option_list);
    }
#line 14752 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 829:
#line 4779 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.partition_option_list) = nullptr;
    }
#line 14760 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 830:
#line 4782 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
        (yyval.partition_option_list) = (yyvsp[0].partition_option_list);
    }
#line 14768 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 831:
#line 4789 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        PartitionRange* p = new_node(PartitionRange);
        p->location = parser->get_location((yylsp[-8]), (yyloc));
        p->name = (yyvsp[-7].string);
        p->less_expr = (yyvsp[-2].expr);
        set_vector(p->options, (yyvsp[0].partition_option_list));
        (yyval.partition_range) = p;
    }
#line 14781 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 832:
#line 4798 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        PartitionRange* p = new_node(PartitionRange);
        p->location = parser->get_location((yylsp[-6]), (yyloc));
        p->name = (yyvsp[-5].string);
        p->less_expr = ConstantExpr::make_maxvalue(parser->arena);
        set_vector(p->options, (yyvsp[0].partition_option_list));
        (yyval.partition_range) = p;
    }
#line 14794 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 833:
#line 4807 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        PartitionRange* p = new_node(PartitionRange);
        p->location = parser->get_location((yylsp[-8]), (yyloc));
        p->name = (yyvsp[-7].string);
        p->range = std::make_pair((yyvsp[-4].expr), (yyvsp[-2].expr));
        set_vector(p->options, (yyvsp[0].partition_option_list));
        (yyval.partition_range) = p;
    }
#line 14807 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 834:
#line 4816 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        PartitionRange* p = new_node(PartitionRange);
        p->location = parser->get_location((yylsp[-8]), (yyloc));
        p->name = (yyvsp[-7].string);
        p->range = std::make_pair((yyvsp[-4].expr), ConstantExpr::make_maxvalue(parser->arena));
        set_vector(p->options, (yyvsp[0].partition_option_list));
        (yyval.partition_range) = p;
    }
#line 14820 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 835:
#line 4828 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.partition_range_list) = append_vector<PartitionRange*>(nullptr, (yyvsp[0].partition_range), parser->arena, 10);
    }
#line 14828 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 836:
#line 4832 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-2].partition_range_list)->push_back((yyvsp[0].partition_range), parser->arena);
        (yyval.partition_range_list) = (yyvsp[-2].partition_range_list);
    }
#line 14837 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 837:
#line 4839 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.partition_range_list) = nullptr;
    }
#line 14845 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 838:
#line 4843 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.partition_range_list) = (yyvsp[0].partition_range_list);
    }
#line 14853 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 839:
#line 4848 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
       { (yyval.integer) = 0; }
#line 14859 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 840:
#line 4849 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            { (yyval.integer) = 0; }
#line 14865 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 841:
#line 4850 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           { (yyval.integer) = 0; }
#line 14871 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 842:
#line 4855 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 14879 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 843:
#line 4859 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 14887 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 844:
#line 4863 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
         (yyval.integer) = 0;
    }
#line 14895 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 845:
#line 4867 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 14903 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 846:
#line 4871 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 14911 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 847:
#line 4875 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 14919 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 848:
#line 4882 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("DEFAULT", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14928 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 849:
#line 4887 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
         (yyval.string_const_expr) = ConstantExpr::make_string("INSTANT", parser->arena);
         (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14937 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 850:
#line 4892 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
         (yyval.string_const_expr) = ConstantExpr::make_string("INPLACE", parser->arena);
         (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14946 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 851:
#line 4897 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("COPY", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14955 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 852:
#line 4902 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = (yyvsp[0].string_const_expr);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14964 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 853:
#line 4910 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("DEFAULT", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14973 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 854:
#line 4915 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("NONE", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14982 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 855:
#line 4920 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("SHARED", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 14991 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 856:
#line 4925 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string_const_expr) = ConstantExpr::make_string("EXCLUSIVE", parser->arena);
        (yyval.string_const_expr)->location = parser->get_location((yylsp[0]));
    }
#line 15000 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 857:
#line 4930 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
          (yyvsp[0].string_const_expr)->location = parser->get_location((yylsp[0]));
          (yyval.string_const_expr) = (yyvsp[0].string_const_expr);
    }
#line 15009 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 877:
#line 4960 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TablePartitionOption* option = new_node(TablePartitionOption);
        option->location = parser->get_location((yylsp[-6]), (yyloc));
        option->partition_type = cantor::pb::ast::PARTITION_RANGE;
        option->expr = (yyvsp[-4].expr);
        set_vector(option->ranges, (yyvsp[-1].partition_range_list));
        (yyval.table_partition_option) = option;
    }
#line 15022 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 878:
#line 4969 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        TablePartitionOption* option = new_node(TablePartitionOption);
        option->location = parser->get_location((yylsp[-5]), (yyloc));
        option->partition_type = cantor::pb::ast::PARTITION_HASH;
        option->expr = (yyvsp[-3].expr);
        option->partition_num = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.table_partition_option) = option;
    }
#line 15035 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 879:
#line 4980 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 15041 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 881:
#line 4986 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        CreateViewStmt* stmt = new_node(CreateViewStmt);
        stmt->location = parser->get_location((yylsp[-6]), (yyloc));
        stmt->or_replace = (yyvsp[-5].integer);
        stmt->view_name = (yyvsp[-3].table_name);
        set_vector(stmt->column_names, (yyvsp[-2].column_name_list));
        stmt->view_select_stmt = (yyvsp[0].stmt);
        (yyval.stmt) = stmt;
    }
#line 15055 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 882:
#line 4999 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 15063 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 883:
#line 5003 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = true;
    }
#line 15071 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 884:
#line 5010 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.column_name_list) = nullptr;
    }
#line 15079 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 885:
#line 5014 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.column_name_list) = (yyvsp[-1].column_name_list);
    }
#line 15087 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 888:
#line 5026 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        SelectStmt* select = (SelectStmt*)(yyvsp[0].stmt);
        select->location = parser->get_location((yylsp[-1]), (yyloc));
        select->with = (cantor::parser::WithClause*)(yyvsp[-1].with_clause);
        (yyval.stmt) = select;
    }
#line 15098 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 889:
#line 5033 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        UnionStmt* union_stmt = (UnionStmt*)(yyvsp[0].stmt);
        union_stmt->location = parser->get_location((yylsp[-1]), (yyloc));
        for (int i = 0; i < union_stmt->select_stmts.size(); ++i) {
            union_stmt->select_stmts[i]->with = (cantor::parser::WithClause*)(yyvsp[-1].with_clause);
        }
        (yyval.stmt) = union_stmt;
    }
#line 15111 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 890:
#line 5045 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[0].with_clause)->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyvsp[0].with_clause)->option = (yyvsp[-1].string);
        (yyval.with_clause) = (yyvsp[0].with_clause);
    }
#line 15121 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 891:
#line 5054 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        WithClause* with_clause =  (WithClause*) (yyvsp[-2].with_clause);
        with_clause->location = parser->get_location((yylsp[-2]), (yyloc));
        with_clause->ctes.push_back((cantor::parser::CommonTableExpr*)(yyvsp[0].expr), parser->arena);
        (yyval.with_clause) = with_clause;
    }
#line 15132 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 892:
#line 5061 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        WithClause* with_clause = new_node(WithClause);
        with_clause->location = parser->get_location((yylsp[0]), (yyloc));
        with_clause->ctes.push_back((cantor::parser::CommonTableExpr*)(yyvsp[0].expr), parser->arena);
        (yyval.with_clause) = with_clause;
    }
#line 15143 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 893:
#line 5071 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        CommonTableExpr* cte = new_node(CommonTableExpr);
        cte->location = parser->get_location((yylsp[-4]), (yyloc));
        cte->name = (yyvsp[-4].string);
        cte->option = (yyvsp[-3].string);
        set_vector(cte->column_names, (yyvsp[-2].range_var_list));
        cte->query_expr = (SubqueryExpr*)(yyvsp[0].expr);
        (yyval.expr) = cte;
    }
#line 15157 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 894:
#line 5083 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.string) = nullptr;
        }
#line 15165 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 895:
#line 5087 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.string) =  ((ConstantExpr*)(yyvsp[-1].string_const_expr))->_u.str_val;
        }
#line 15173 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 896:
#line 5095 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DropTableStmt* stmt = new_node(DropTableStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_exist = (yyvsp[-2].integer);
        set_vector(stmt->table_names, (yyvsp[-1].table_name_list));
        (yyval.stmt) = stmt;
    }
#line 15185 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 899:
#line 5109 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 15191 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 902:
#line 5117 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DropViewStmt* stmt = new_node(DropViewStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_exist = (yyvsp[-2].integer);
        stmt->view_name = (yyvsp[-1].table_name);
        (yyval.stmt) = stmt;
    }
#line 15203 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 903:
#line 5129 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        RestoreTableStmt* stmt = new_node(RestoreTableStmt);
        stmt->location = parser->get_location((yylsp[-2]), (yyloc));
        set_vector(stmt->table_names, (yyvsp[0].table_name_list));
        (yyval.stmt) = stmt;
    }
#line 15214 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 904:
#line 5140 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        CreateDatabaseStmt* stmt = new_node(CreateDatabaseStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_not_exist = (yyvsp[-2].integer);
        stmt->db_name = (yyvsp[-1].string);
        set_vector(stmt->options, (yyvsp[0].database_option_list));
        (yyval.stmt) = stmt;
    }
#line 15227 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 905:
#line 5151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 15235 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 906:
#line 5157 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 15243 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 907:
#line 5163 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DatabaseOption* option = new_node(DatabaseOption);
        option->location = parser->get_location((yylsp[-3]), (yyloc));
        option->type = cantor::pb::ast::DATABASE_OPT_CHARSET;
        option->str_value = (yyvsp[0].string);
        (yyval.database_option) = option;
    }
#line 15255 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 908:
#line 5171 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DatabaseOption* option = new_node(DatabaseOption);
        option->location = parser->get_location((yylsp[-3]), (yyloc));
        option->type = cantor::pb::ast::DATABASE_OPT_COLLATE;
        option->str_value = (yyvsp[0].string);
        (yyval.database_option) = option;
    }
#line 15267 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 909:
#line 5179 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DatabaseOption* option = new_node(DatabaseOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        option->type = cantor::pb::ast::DATABASE_OPT_COMMENT;
        option->str_value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.database_option) = option;
    }
#line 15279 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 910:
#line 5189 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.database_option_list) = nullptr;
    }
#line 15287 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 911:
#line 5193 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.database_option_list) = (yyvsp[0].database_option_list);
    }
#line 15295 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 912:
#line 5200 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.database_option_list) = append_vector<DatabaseOption*>(nullptr, (yyvsp[0].database_option), parser->arena);
    }
#line 15303 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 913:
#line 5204 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-1].database_option_list)->push_back((yyvsp[0].database_option), parser->arena);
        (yyval.database_option_list) = (yyvsp[-1].database_option_list);
    }
#line 15312 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 914:
#line 5212 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DropDatabaseStmt* stmt = new_node(DropDatabaseStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->if_exist = (yyvsp[-1].integer);
        stmt->db_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 15324 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 915:
#line 5222 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 15330 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 917:
#line 5228 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto node = new_node(StartTxnStmt);
        node->read_only = true;
        node->location = parser->get_location((yylsp[-4]), (yyloc));
        (yyval.stmt) = node;
    }
#line 15341 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 918:
#line 5235 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = new_node(StartTxnStmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15350 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 919:
#line 5243 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = new_node(CommitTxnStmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15359 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 920:
#line 5251 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = new_node(RollbackTxnStmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15368 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 921:
#line 5259 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = (yyvsp[0].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15377 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 922:
#line 5264 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = (yyvsp[0].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-4]), (yyloc));
    }
#line 15386 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 923:
#line 5269 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = (yyvsp[0].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-4]), (yyloc));
    }
#line 15395 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 924:
#line 5274 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = (yyvsp[0].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-3]), (yyloc));
    }
#line 15404 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 925:
#line 5282 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {   
        auto* set = new_node(PragmaSetStmt);
        set->location = parser->get_location((yylsp[0]));
        set->var_list.push_back((yyvsp[0].var_assign), parser->arena);
        (yyval.stmt) = set;
    }
#line 15415 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 926:
#line 5289 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ((PragmaSetStmt*)(yyvsp[-2].stmt))->var_list.push_back((yyvsp[0].var_assign), parser->arena);
        (yyval.stmt) = (yyvsp[-2].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15425 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 927:
#line 5298 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto assign = new_node(VarAssign);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->key = (yyvsp[-2].string);
        if ((yyvsp[0].expr) != nullptr && (yyvsp[0].expr)->expr_type == cantor::pb::ast::ENT_RANGE_VAR) {
            auto* col_name = (RangeVar*)(yyvsp[0].expr);
            if (col_name->column && col_name->column->column_name.to_lower() == "off") {
                // SET XXX = OFF
                // OFF to 0
                assign->value = ConstantExpr::make_int("0", parser->arena);
            } else {
                assign->value = (yyvsp[0].expr);
            }
        } else {
            assign->value = (yyvsp[0].expr);
        }
        (yyval.var_assign) = assign;
    }
#line 15448 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 928:
#line 5317 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto assign = new_node(VarAssign);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->key = (yyvsp[-2].string);
        assign->value = ConstantExpr::make_int("1", parser->arena);
        (yyval.var_assign) = assign;
    }
#line 15460 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 929:
#line 5325 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto assign = new_node(VarAssign);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->key = (yyvsp[-2].string);
        (yyval.var_assign) = assign;
    }
#line 15471 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 930:
#line 5332 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto assign = new_node(VarAssign);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->key = (yyvsp[-2].string);
        if ((yyvsp[0].expr) != nullptr && (yyvsp[0].expr)->expr_type == cantor::pb::ast::ENT_RANGE_VAR) {
            auto* col_name = (RangeVar*)(yyvsp[0].expr);
            if (col_name->column && col_name->column->column_name.to_lower() == "off") {
                // SET XXX = OFF
                // OFF to 0
                assign->value = ConstantExpr::make_int("0", parser->arena);
            } else {
                assign->value = (yyvsp[0].expr);
            }
        } else {
            assign->value = (yyvsp[0].expr);
        }
        (yyval.var_assign) = assign;
    }
#line 15494 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 931:
#line 5351 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        VarAssign* assign = nullptr;
        if ((yyvsp[0].string).empty() == false) {
            assign = new_node(VarAssign);
            assign->key.strdup("CHARACTER SET", parser->arena);
            assign->value = ConstantExpr::make_string((yyvsp[0].string).value, parser->arena);
            assign->location = parser->get_location((yylsp[-1]), (yyloc));
        }
        (yyval.var_assign) = assign;
    }
#line 15509 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 932:
#line 5365 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 15517 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 933:
#line 5369 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        String str;
        if ((yyvsp[0].string).empty() == false) {
            str.strdup("@@global.", parser->arena);
            str.append((yyvsp[0].string).c_str(), parser->arena);
        }
        (yyval.string) = str;
    }
#line 15530 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 934:
#line 5378 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        String str;
        if ((yyvsp[0].string).empty() == false) {
            str.strdup("@@session.", parser->arena);
            str.append((yyvsp[0].string).c_str(), parser->arena);
        }
        (yyval.string) = str;
    }
#line 15543 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 935:
#line 5387 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        String str;
        if ((yyvsp[0].string).empty() == false) {
            str.strdup("@@local.", parser->arena);
            str.append((yyvsp[0].string).c_str(), parser->arena);
        }
        (yyval.string) = str;
    }
#line 15556 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 936:
#line 5399 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* set = new_node(PragmaSetStmt);
        set->location = parser->get_location((yylsp[0]));
        set->var_list.push_back((yyvsp[0].var_assign), parser->arena);
        (yyval.stmt) = set;
    }
#line 15567 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 937:
#line 5406 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ((PragmaSetStmt*)(yyvsp[-2].stmt))->var_list.push_back((yyvsp[0].var_assign), parser->arena);
        (yyval.stmt) = (yyvsp[-2].stmt);
        (yyval.stmt)->location = parser->get_location((yylsp[-2]), (yyloc));
    }
#line 15577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 938:
#line 5415 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto assign = new_node(VarAssign);
        assign->location = parser->get_location((yylsp[-2]), (yyloc));
        assign->key.strdup("@@isolation.", parser->arena);
        assign->value = (yyvsp[0].expr);
        (yyval.var_assign) = assign;
    }
#line 15589 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 939:
#line 5433 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_int("1", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 15598 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 940:
#line 5438 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_int("2", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 15607 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 941:
#line 5443 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_int("3", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[-1]), (yyloc));
    }
#line 15616 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 942:
#line 5448 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.expr) = ConstantExpr::make_int("4", parser->arena);
        (yyval.expr)->location = parser->get_location((yylsp[0]));
    }
#line 15625 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 943:
#line 5455 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                 {
        (yyval.stmt) = nullptr;
    }
#line 15633 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 944:
#line 5458 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        (yyval.stmt) = nullptr;
    }
#line 15641 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 945:
#line 5461 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
        (yyval.stmt) = nullptr;
    }
#line 15649 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 946:
#line 5464 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        (yyval.stmt) = nullptr;
    }
#line 15657 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 947:
#line 5467 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        // See https://dev.mysql.com/doc/refman/5.7/en/show-grants.html
        (yyval.stmt) = nullptr;
    }
#line 15666 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 948:
#line 5476 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.stmt) = nullptr;
    }
#line 15674 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 949:
#line 5479 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        (yyval.stmt) = nullptr;
    }
#line 15682 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 950:
#line 5482 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.stmt) = nullptr;
    }
#line 15690 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 951:
#line 5485 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.stmt) = nullptr;
    }
#line 15698 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 957:
#line 5499 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
        (yyval.stmt) = nullptr;
    }
#line 15706 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 958:
#line 5502 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.stmt) = nullptr;
    }
#line 15714 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 959:
#line 5505 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.stmt) = nullptr;
    }
#line 15722 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 960:
#line 5508 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                         {
        (yyval.stmt) = nullptr;
    }
#line 15730 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 961:
#line 5511 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                       {
        (yyval.stmt) = nullptr;
    }
#line 15738 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 962:
#line 5514 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                      {
        (yyval.stmt) = nullptr;
    }
#line 15746 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 963:
#line 5518 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                       {
        (yyval.stmt) = nullptr;
    }
#line 15754 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 964:
#line 5522 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                            {
        (yyval.stmt) = nullptr;
    }
#line 15762 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 965:
#line 5525 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                           {
        // SHOW FIELDS is a synonym for SHOW COLUMNS
        (yyval.stmt) = nullptr;
    }
#line 15771 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 966:
#line 5529 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.stmt) = nullptr;
    }
#line 15779 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 967:
#line 5532 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        (yyval.stmt) = nullptr;
    }
#line 15787 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 968:
#line 5535 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
        (yyval.stmt) = nullptr;
    }
#line 15795 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 969:
#line 5538 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
        (yyval.stmt) = nullptr;
    }
#line 15803 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 970:
#line 5541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
        (yyval.stmt) = nullptr;
    }
#line 15811 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 971:
#line 5544 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        (yyval.stmt) = nullptr;
    }
#line 15819 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 972:
#line 5548 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = nullptr;
    }
#line 15827 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 973:
#line 5552 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.stmt) = nullptr;
    }
#line 15835 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 974:
#line 5555 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.stmt) = nullptr;
    }
#line 15843 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 975:
#line 5559 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                    {
        (yyval.expr) = nullptr;
    }
#line 15851 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 976:
#line 5562 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.expr) = nullptr;
    }
#line 15859 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 977:
#line 5565 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                 {
        (yyval.expr) = nullptr;
    }
#line 15867 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 978:
#line 5570 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 15875 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 979:
#line 5573 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.integer) = true;
    }
#line 15883 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 980:
#line 5576 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
              {
        (yyval.integer) = false;
    }
#line 15891 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 981:
#line 5581 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 15899 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 982:
#line 5584 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        (yyval.integer) = true;
    }
#line 15907 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 983:
#line 5589 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 15915 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 984:
#line 5592 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
        (yyval.string) = nullptr;
    }
#line 15923 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 985:
#line 5597 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        (yyval.string) = nullptr;
    }
#line 15931 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 986:
#line 5604 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterTableStmt* stmt = new_node(AlterTableStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->ignore = (yyvsp[-3].integer);
        stmt->table_name = (yyvsp[-1].table_name);
        set_vector(stmt->alter_specs, (yyvsp[0].alter_spec_list));
        (yyval.stmt) = stmt;
    }
#line 15944 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 987:
#line 5613 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterTableStmt* stmt = new_node(AlterTableStmt);
        stmt->location = parser->get_location((yylsp[-10]), (yyloc));
        stmt->table_name = (yyvsp[-4].table_name);
        auto* item = new_node(Constraint);
        item->type = cantor::pb::ast::CONSTRAINT_INDEX;
        item->index_dist = (yyvsp[-8].index_distribute_type);
        item->name = (yyvsp[-7].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-6].index_type), parser->arena);
        item->index_option = op;
        auto spec = new_node(AlterTableSpec);
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_INDEX;
        spec->new_constraints.push_back((Constraint*)item, parser->arena);
        stmt->alter_specs.push_back(spec, parser->arena);
        (yyval.stmt) = stmt;
    }
#line 15966 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 988:
#line 5631 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterTableStmt* stmt = new_node(AlterTableStmt);
        stmt->location = parser->get_location((yylsp[-11]), (yyloc));
        stmt->table_name = (yyvsp[-4].table_name);
        auto* item = new_node(Constraint);
        item->type = cantor::pb::ast::CONSTRAINT_UNIQ;
        item->index_dist = (yyvsp[-8].index_distribute_type);
        item->name = (yyvsp[-7].string);
        set_vector(item->columns, (yyvsp[-2].column_name_list));
        auto op = set_index_type((yyvsp[0].index_option), (yyvsp[-6].index_type), parser->arena);
        item->index_option = op;
        auto spec = new_node(AlterTableSpec);
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_INDEX;
        spec->new_constraints.push_back((Constraint*)item, parser->arena);
        stmt->alter_specs.push_back(spec, parser->arena);
        (yyval.stmt) = stmt;
    }
#line 15988 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 989:
#line 5649 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterTableStmt* stmt = new_node(AlterTableStmt);
        stmt->location = parser->get_location((yylsp[-6]), (yyloc));
        stmt->table_name = (yyvsp[-2].table_name);
        auto spec = new_node(AlterTableSpec);
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_INDEX;
        spec->index_name = (yyvsp[-4].string);
        spec->force = (yyvsp[-1].integer);
        stmt->alter_specs.push_back(spec, parser->arena);
        (yyval.stmt) = stmt;
    }
#line 16004 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 990:
#line 5664 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.alter_spec_list) = append_vector<AlterTableSpec*>(nullptr, (yyvsp[0].alter_spec), parser->arena);
    }
#line 16012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 991:
#line 5668 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-2].alter_spec_list)->push_back((yyvsp[0].alter_spec), parser->arena);
        (yyval.alter_spec_list) = (yyvsp[-2].alter_spec_list);
    }
#line 16021 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 992:
#line 5675 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16027 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 994:
#line 5680 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16033 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 995:
#line 5682 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16039 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 996:
#line 5684 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16045 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 997:
#line 5687 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16051 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 998:
#line 5689 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16057 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 999:
#line 5691 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 16063 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1000:
#line 5696 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[0]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_TABLE_OPTION;
        set_vector(spec->table_options, (yyvsp[0].table_option_list));
        (yyval.alter_spec) = spec;
    }
#line 16075 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1001:
#line 5704 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_COLUMN;
        spec->new_columns.push_back((ColumnDef*)(yyvsp[-1].column_def), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16087 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1002:
#line 5712 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-4]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_COLUMN;
        spec->is_unique_indicator = true;
        spec->new_columns.push_back((ColumnDef*)(yyvsp[-1].column_def), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16100 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1003:
#line 5721 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-4]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_COLUMN;
        set_vector(spec->new_columns, (yyvsp[-1].column_def_list));
        (yyval.alter_spec) = spec;
    }
#line 16112 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1004:
#line 5729 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_COLUMN;
        spec->column_name = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16124 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1005:
#line 5737 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-4]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_RENAME_COLUMN;
        spec->column_name = (yyvsp[-2].string);

        ColumnDef* new_column = new_node(ColumnDef);
        new_column->name = (yyvsp[0].column_name);
        spec->new_columns.push_back(new_column, parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16140 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1006:
#line 5749 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_RENAME_TABLE;
        spec->new_table_name = (yyvsp[0].table_name);
        (yyval.alter_spec) = spec;
    }
#line 16152 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1007:
#line 5757 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_SWAP_TABLE;
        spec->new_table_name = (yyvsp[0].table_name);
        (yyval.alter_spec) = spec;
    }
#line 16164 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1008:
#line 5765 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_INDEX;
        spec->new_constraints.push_back((Constraint*)(yyvsp[0].constraint), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16176 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1009:
#line 5773 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_INDEX;
        spec->is_virtual_index = true;
        spec->new_constraints.push_back((Constraint*)(yyvsp[0].constraint), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16189 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1010:
#line 5782 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_INDEX;
        spec->index_name = (yyvsp[-1].string);
        spec->force = (yyvsp[0].integer);
        (yyval.alter_spec) = spec;
    }
#line 16202 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1011:
#line 5791 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_INDEX;
        spec->is_virtual_index = true;
        spec->index_name = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16215 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1012:
#line 5800 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_RESTORE_INDEX;
        spec->index_name = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16227 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1013:
#line 5808 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_LEARNER;
        spec->resource_tag = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16239 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1014:
#line 5816 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_LEARNER;
        spec->resource_tag = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16251 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1015:
#line 5824 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-4]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_MODIFY_COLUMN;
        set_vector(spec->set_list, (yyvsp[-1].assignment_list));
        spec->where = (yyvsp[0].where_clause);
        (yyval.alter_spec) = spec;
    }
#line 16264 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1016:
#line 5833 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_MODIFY_COLUMN;
        spec->new_columns.push_back((ColumnDef*)(yyvsp[-1].column_def), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16276 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1017:
#line 5841 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-1]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_ADD_PARTITION;
        spec->partition_range = (PartitionRange*)(yyvsp[0].partition_range);
        (yyval.alter_spec) = spec;
    }
#line 16288 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1018:
#line 5849 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-2]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_DROP_PARTITION;
        spec->partition_range = new_node(PartitionRange);
        spec->partition_range->name = (yyvsp[0].string);
        (yyval.alter_spec) = spec;
    }
#line 16301 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1019:
#line 5858 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-3]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_MODIFY_PARTITION;
        spec->partition_range = new_node(PartitionRange);
        spec->partition_range->name = (yyvsp[-1].string);
        set_vector(spec->partition_range->options, (yyvsp[0].partition_option_list));
        (yyval.alter_spec) = spec;
    }
#line 16315 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1020:
#line 5868 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto spec = new_node(AlterTableSpec);
        spec->location = parser->get_location((yylsp[-4]), (yyloc));
        spec->spec_type = cantor::pb::ast::ALTER_SPEC_CHANGE_COLUMN;
        spec->column_name = (yyvsp[-2].string);
        spec->new_columns.push_back((ColumnDef*)(yyvsp[-1].column_def), parser->arena);
        (yyval.alter_spec) = spec;
    }
#line 16328 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1021:
#line 5880 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterViewStmt* stmt = new_node(AlterViewStmt);
        stmt->location = parser->get_location((yylsp[-5]), (yyloc));
        stmt->view_name = (yyvsp[-3].table_name);
        set_vector(stmt->column_names, (yyvsp[-2].column_name_list));
        stmt->view_select_stmt = (yyvsp[0].stmt);
        (yyval.stmt) = stmt;
    }
#line 16341 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1022:
#line 5893 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        NewPrepareStmt* stmt = new_node(NewPrepareStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->name = (yyvsp[-2].string);
        stmt->sql = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        (yyval.stmt) = stmt;
    }
#line 16353 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1023:
#line 5901 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].string).starts_with("@@") ) {
            sql_error(&(yylsp[-2]), yyscanner, parser, "user variable cannot start with @@");
            return -1;
        }
        if ((yyvsp[0].string).starts_with("@") == false) {
            sql_error(&(yylsp[-2]), yyscanner, parser, "only user variable is permitted in USING clause");
            return -1;
        }
        NewPrepareStmt* stmt = new_node(NewPrepareStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->name = (yyvsp[-2].string);
        stmt->sql = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16373 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1024:
#line 5920 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ExecPrepareStmt* stmt = new_node(ExecPrepareStmt);
        stmt->location = parser->get_location((yylsp[-1]), (yyloc));
        stmt->name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16384 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1025:
#line 5927 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        ExecPrepareStmt* stmt = new_node(ExecPrepareStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->name = (yyvsp[-2].string);
        for (int idx = 0; idx < (yyvsp[0].string_list)->size(); ++idx) {
            if ((*(yyvsp[0].string_list))[idx].starts_with("@@")) {
                sql_error(&(yylsp[-2]), yyscanner, parser, "user variable cannot start with @@");
                return -1;
            }
            if ((*(yyvsp[0].string_list))[idx].starts_with("@") == false) {
                sql_error(&(yylsp[-2]), yyscanner, parser, "only user variable is permitted in USING clause");
                return -1;
            }
            stmt->param_list.push_back((*(yyvsp[0].string_list))[idx], parser->arena);
        }
        (yyval.stmt) = stmt;
    }
#line 16406 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1026:
#line 5948 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        Vector<String>* string_list = new_node(Vector<String>);
        string_list->reserve(5, parser->arena);
        string_list->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = string_list;        
    }
#line 16417 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1027:
#line 5955 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-2].string_list)->push_back((yyvsp[0].string), parser->arena);
        (yyval.string_list) = (yyvsp[-2].string_list);
    }
#line 16426 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1028:
#line 5963 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DeallocPrepareStmt* stmt = new_node(DeallocPrepareStmt);
        stmt->location = parser->get_location((yylsp[-2]), (yyloc));
        stmt->name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16437 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1029:
#line 5970 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DeallocPrepareStmt* stmt = new_node(DeallocPrepareStmt);
        stmt->location = parser->get_location((yylsp[-2]), (yyloc));
        stmt->name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16448 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1033:
#line 5983 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
        ExplainStmt* explain = new_node(ExplainStmt);
        explain->location = parser->get_location((yylsp[-1]), (yyloc));
        explain->stmt = (yyvsp[0].stmt);
        explain->format = "row";
        (yyval.stmt) = explain;
    }
#line 16460 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1034:
#line 5990 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                         {
        ExplainStmt* explain = new_node(ExplainStmt);
        explain->location = parser->get_location((yylsp[-4]), (yyloc));
        explain->format = ((ConstantExpr*)(yyvsp[-1].string_const_expr))->_u.str_val;
        explain->stmt = (yyvsp[0].stmt);
        (yyval.stmt) = explain;
    }
#line 16472 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1035:
#line 6000 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
        KillStmt* k = new_node(KillStmt);
        k->location = parser->get_location((yylsp[-1]), (yyloc));
        k->conn_id = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.stmt) = k;
    }
#line 16483 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1036:
#line 6006 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
        KillStmt* k = new_node(KillStmt);
        k->location = parser->get_location((yylsp[-2]), (yyloc));
        k->conn_id = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        (yyval.stmt) = k;
    }
#line 16494 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1037:
#line 6012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                             {
        KillStmt* k = new_node(KillStmt);
        k->location = parser->get_location((yylsp[-2]), (yyloc));
        k->conn_id = ((ConstantExpr*)(yyvsp[0].int_const_expr))->_u.int64_val;
        k->is_query = true;
        (yyval.stmt) = k;
    }
#line 16506 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1038:
#line 6026 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        LoadDataStmt* load = new_node(LoadDataStmt);
        load->location = parser->get_location((yylsp[-14]), (yyloc));
        load->is_local = (yyvsp[-12].integer);
        load->path = ((ConstantExpr*)(yyvsp[-10].string_const_expr))->_u.str_val;
        load->on_duplicate_handle = (yyvsp[-9].on_duplicate_key_handle);
        load->table_name = (yyvsp[-6].table_name);
        load->char_set = (yyvsp[-5].string);
        load->fields_info = (FieldsClause*)(yyvsp[-4].fields_clause);
        load->lines_info = (LinesClause*)(yyvsp[-3].lines_clause);
        load->ignore_lines = (yyvsp[-2].integer);
        set_vector(load->columns, (yyvsp[-1].column_name_list));
        set_vector(load->set_list, (yyvsp[0].assignment_list));
        (yyval.stmt) = load;
    }
#line 16526 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1039:
#line 6045 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = true;
    }
#line 16534 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1040:
#line 6048 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.integer) = true;
    }
#line 16542 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1041:
#line 6054 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = 0;
    }
#line 16550 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1042:
#line 6058 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = ((ConstantExpr*)(yyvsp[-1].int_const_expr))->_u.int64_val;
    }
#line 16558 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1043:
#line 6064 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.on_duplicate_key_handle) = cantor::pb::ast::ON_DUPLICATE_KEY_ERROR;
    }
#line 16566 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1044:
#line 6068 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.on_duplicate_key_handle) = cantor::pb::ast::ON_DUPLICATE_KEY_IGNORE;
    }
#line 16574 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1045:
#line 6072 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.on_duplicate_key_handle) = cantor::pb::ast::ON_DUPLICATE_KEY_REPLACE;
    }
#line 16582 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1046:
#line 6078 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FieldsClause* fields_info = new_node(FieldsClause);
        fields_info->terminated = "\t";
        fields_info->escaped = "\\";
        fields_info->enclosed = nullptr;
        (yyval.fields_clause) = fields_info;
    }
#line 16594 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1047:
#line 6085 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                    {
        FieldsClause* fields_info = new_node(FieldsClause);
        fields_info->location = parser->get_location((yylsp[-1]), (yyloc));
        fields_info->terminated = "\t";
        fields_info->escaped = "\\";
        fields_info->enclosed = nullptr;
        for (int i = 0; i < (yyvsp[0].field_item_list)->size(); i++) {
            FieldItem* item = (*(yyvsp[0].field_item_list))[i];
            switch (item->type) {
                case cantor::pb::ast::LOAD_TERMINATED: {
                    fields_info->terminated = item->value;
                    break;
                }
                case cantor::pb::ast::LOAD_ENCLOSED: {
                    fields_info->enclosed = item->value;
                    fields_info->opt_enclosed = item->opt_enclosed;
                    break;
                }
                case cantor::pb::ast::LOAD_ESCAPED: {
                    fields_info->escaped = item->value;
                    break;
                }
            }
        }
        (yyval.fields_clause) = fields_info;
    }
#line 16625 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1050:
#line 6120 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.field_item_list) = append_vector<FieldItem*>(nullptr, (yyvsp[0].field_item), parser->arena);
    }
#line 16633 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1051:
#line 6124 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyvsp[-1].field_item_list)->push_back((yyvsp[0].field_item), parser->arena);
        (yyval.field_item_list) = (yyvsp[-1].field_item_list);
    }
#line 16642 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1052:
#line 6132 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FieldItem* field_item = new_node(FieldItem);
        field_item->location = parser->get_location((yylsp[-2]), (yyloc));
        field_item->type = cantor::pb::ast::LOAD_TERMINATED;
        field_item->value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;;
        (yyval.field_item) = field_item;
    }
#line 16654 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1053:
#line 6140 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FieldItem* field_item = new_node(FieldItem);
        field_item->location = parser->get_location((yylsp[-3]), (yyloc));
        field_item->type = cantor::pb::ast::LOAD_ENCLOSED;
        field_item->value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;;
        field_item->opt_enclosed = true;
        if (field_item->value.to_string() != "\\" && field_item->value.length > 1) {
            sql_error(&(yylsp[-2]), yyscanner, parser, "wrong terminator.");
            return -1;
        }
        (yyval.field_item) = field_item;
    }
#line 16671 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1054:
#line 6153 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FieldItem* field_item = new_node(FieldItem);
        field_item->location = parser->get_location((yylsp[-2]), (yyloc));
        field_item->type = cantor::pb::ast::LOAD_ENCLOSED;
        field_item->value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;;
        if (field_item->value.to_string()  != "\\" && field_item->value.length > 1) {
            sql_error(&(yylsp[-1]), yyscanner, parser, "wrong terminator.");
            return -1;
        }
        (yyval.field_item) = field_item;
    }
#line 16687 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1055:
#line 6165 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        FieldItem* field_item = new_node(FieldItem);
        field_item->location = parser->get_location((yylsp[-2]), (yyloc));
        field_item->type = cantor::pb::ast::LOAD_ESCAPED;
        field_item->value = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;;
        if (field_item->value.to_string() != "\\" && field_item->value.length > 1) {
            sql_error(&(yylsp[-1]), yyscanner, parser, "wrong terminator.");
            return -1;
        }
        (yyval.field_item) = field_item;
    }
#line 16703 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1056:
#line 6179 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        LinesClause* lines = new_node(LinesClause);
        lines->terminated = "\n";
        lines->starting = nullptr;
        (yyval.lines_clause) = lines;
    }
#line 16714 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1057:
#line 6186 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        LinesClause* lines = new_node(LinesClause);
        lines->location = parser->get_location((yylsp[-2]), (yyloc));
        lines->starting = (yyvsp[-1].string);
        lines->terminated = (yyvsp[0].string);
        (yyval.lines_clause) = lines;
    }
#line 16726 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1058:
#line 6196 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = "";
    }
#line 16734 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1059:
#line 6200 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
    }
#line 16742 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1060:
#line 6206 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = "\n";
    }
#line 16750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1061:
#line 6210 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;;
    }
#line 16758 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1062:
#line 6216 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.column_name_list) = nullptr;
    }
#line 16766 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1063:
#line 6220 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.column_name_list) = (yyvsp[-1].column_name_list);
    }
#line 16774 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1064:
#line 6226 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.assignment_list) = nullptr;
    }
#line 16782 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1065:
#line 6230 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.assignment_list) = (yyvsp[0].assignment_list);
    }
#line 16790 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1073:
#line 6251 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        CreateNamespaceStmt* stmt = new_node(CreateNamespaceStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_not_exists = (yyvsp[-2].integer);
        stmt->ns_name = (yyvsp[-1].string);
        set_vector(stmt->options, (yyvsp[0].namespace_option_list));
        (yyval.stmt) = stmt;
    }
#line 16803 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1074:
#line 6263 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DropNamespaceStmt* stmt = new_node(DropNamespaceStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->if_exists = (yyvsp[-1].integer);
        stmt->ns_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16815 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1075:
#line 6274 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterNamespaceStmt* stmt = new_node(AlterNamespaceStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_exists = (yyvsp[-2].integer);
        stmt->ns_name = (yyvsp[-1].string);
        set_vector(stmt->options, (yyvsp[0].namespace_option_list));
        (yyval.stmt) = stmt;
    }
#line 16828 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1076:
#line 6285 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
             {
        (yyval.string) = (yyvsp[0].string);
    }
#line 16836 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1077:
#line 6292 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        NamespaceOption* option = new_node(NamespaceOption);
        option->location = parser->get_location((yylsp[-2]), (yyloc));
        if ((yyvsp[-2].string).to_lower() == "quota") {
            option->type = cantor::pb::ast::NAMESPACE_OPT_QUOTA;
            option->uint_value = ((ConstantExpr*)(yyvsp[0].expr))->_u.int64_val;
        } else if ((yyvsp[-2].string).to_lower() == "resource_tag") {
            option->type = cantor::pb::ast::NAMESPACE_OPT_RESOURCE_TAG;
            option->str_value = ((ConstantExpr*)(yyvsp[0].expr))->_u.str_val;
        }
        (yyval.namespace_option) = option;
    }
#line 16853 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1078:
#line 6307 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.namespace_option_list) = nullptr;
    }
#line 16861 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1079:
#line 6311 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.namespace_option_list) = (yyvsp[0].namespace_option_list);
    }
#line 16869 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1080:
#line 6318 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.namespace_option_list) = append_vector<NamespaceOption*>(nullptr, (yyvsp[0].namespace_option), parser->arena);
    }
#line 16877 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1081:
#line 6322 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.namespace_option_list) = append_vector<NamespaceOption*>((yyvsp[-1].namespace_option_list), (yyvsp[0].namespace_option), parser->arena);
    }
#line 16885 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1082:
#line 6326 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.namespace_option_list) = append_vector<NamespaceOption*>((yyvsp[-2].namespace_option_list), (yyvsp[0].namespace_option), parser->arena);
    }
#line 16893 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1083:
#line 6333 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        // See https://dev.mysql.com/doc/refman/5.7/en/create-user.html
        CreateUserStmt* stmt = new_node(CreateUserStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_not_exists = (yyvsp[-2].integer);
        set_vector(stmt->specs, (yyvsp[-1].user_spec_list));
        stmt->namespace_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16907 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1084:
#line 6346 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        DropUserStmt* stmt = new_node(DropUserStmt);
        stmt->location = parser->get_location((yylsp[-3]), (yyloc));
        stmt->if_exists = (yyvsp[-1].integer);
        set_vector(stmt->specs, (yyvsp[0].user_spec_list));
        (yyval.stmt) = stmt;
    }
#line 16919 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1085:
#line 6357 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        AlterUserStmt* stmt = new_node(AlterUserStmt);
        stmt->location = parser->get_location((yylsp[-4]), (yyloc));
        stmt->if_exists = (yyvsp[-2].integer);
        set_vector(stmt->specs, (yyvsp[-1].user_spec_list));
        stmt->namespace_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 16932 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1086:
#line 6369 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.user_spec_list) = append_vector<UserSpec*>(nullptr, (yyvsp[0].user_spec), parser->arena);
    }
#line 16940 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1087:
#line 6373 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].user_spec) != nullptr) {
            append_vector<UserSpec*>((yyvsp[-2].user_spec_list), (yyvsp[0].user_spec), parser->arena);
        }
        (yyval.user_spec_list) = (yyvsp[-2].user_spec_list);
    }
#line 16951 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1088:
#line 6383 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        UserSpec* user_spec = new_node(UserSpec);
        user_spec->location = parser->get_location((yylsp[-1]), (yyloc));
        user_spec->user = (UserIdentity*)(yyvsp[-1].user_identity);
        if ((yyvsp[0].auth_option) != nullptr) {
            user_spec->auth_opt = (yyvsp[0].auth_option);
        }
        (yyval.user_spec) = user_spec;
    }
#line 16965 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1089:
#line 6396 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        UserIdentity* user = new_node(UserIdentity);
        user->location = parser->get_location((yylsp[0]));
        user->username = (yyvsp[0].string);
        user->hostname = "%";
        (yyval.user_identity) = user;
    }
#line 16977 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1090:
#line 6404 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        UserIdentity* user = new_node(UserIdentity);
        user->location = parser->get_location((yylsp[-2]), (yyloc));
        user->username = (yyvsp[-2].string);
        user->hostname = (yyvsp[0].string);
        (yyval.user_identity) = user;
    }
#line 16989 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1091:
#line 6412 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        UserIdentity* user = new_node(UserIdentity);
        user->location = parser->get_location((yylsp[-1]), (yyloc));
        user->current_user = true;
        (yyval.user_identity) = user;
    }
#line 17000 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1092:
#line 6421 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 17006 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1093:
#line 6423 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {}
#line 17012 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1094:
#line 6426 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.auth_option) = nullptr;
    }
#line 17020 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1095:
#line 6430 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto* auth_option = new_node(AuthOption);
        auth_option->location = parser->get_location((yylsp[-2]), (yyloc));
        auth_option->auth_string = (yyvsp[0].string);
        (yyval.auth_option) = auth_option;
    }
#line 17031 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1096:
#line 6440 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
    }
#line 17039 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1097:
#line 6446 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 17047 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1098:
#line 6450 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 17055 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1099:
#line 6457 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        GrantStmt* stmt = new_node(GrantStmt);
        stmt->location = parser->get_location((yylsp[-7]), (yyloc));
        set_vector(stmt->privs, (yyvsp[-6].priv_type_list));
        stmt->priv_level = (PrivLevel*)(yyvsp[-4].priv_level);
        set_vector(stmt->specs, (yyvsp[-2].user_spec_list));
        stmt->with_grant = (yyvsp[-1].integer);
        stmt->namespace_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 17070 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1100:
#line 6471 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        RevokeStmt* stmt = new_node(RevokeStmt);
        stmt->location = parser->get_location((yylsp[-6]), (yyloc));
        set_vector(stmt->privs, (yyvsp[-5].priv_type_list));
        stmt->priv_level = (PrivLevel*)(yyvsp[-3].priv_level);
        set_vector(stmt->specs, (yyvsp[-1].user_spec_list));
        stmt->namespace_name = (yyvsp[0].string);
        (yyval.stmt) = stmt;
    }
#line 17084 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1101:
#line 6485 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.priv_type_list) = append_vector<PrivType*>(nullptr, (yyvsp[0].priv_type), parser->arena);
    }
#line 17092 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1102:
#line 6489 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        if ((yyvsp[0].priv_type) != nullptr) {
            append_vector<PrivType*>((yyvsp[-2].priv_type_list), (yyvsp[0].priv_type), parser->arena);
        }
        (yyval.priv_type_list) = (yyvsp[-2].priv_type_list);
    }
#line 17103 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1103:
#line 6498 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {
        PrivType* priv = new_node(PrivType);
        priv->location = parser->get_location((yylsp[0]));
        priv->type = (SqlACL)(yyvsp[0].integer);
        (yyval.priv_type) = priv;
    }
#line 17114 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1104:
#line 6507 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
		(yyval.integer) = ALL_ACL;
	}
#line 17122 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1105:
#line 6510 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
		(yyval.integer) = ALL_ACL;
	}
#line 17130 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1106:
#line 6513 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = ALTER_ACL;
	}
#line 17138 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1107:
#line 6516 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                              {
		(yyval.integer) = ALTER_PROC_ACL;
	}
#line 17146 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1108:
#line 6520 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
		(yyval.integer) = CREATE_ACL;
	}
#line 17154 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1109:
#line 6523 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
		(yyval.integer) = CREATE_PROC_ACL;
	}
#line 17162 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1110:
#line 6526 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
		(yyval.integer) = CREATE_TABLESPACE_ACL;
	}
#line 17170 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1111:
#line 6529 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                        {
		(yyval.integer) = CREATE_TMP_ACL;
	}
#line 17178 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1112:
#line 6532 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
		(yyval.integer) = CREATE_USER_ACL;
	}
#line 17186 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1113:
#line 6535 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
		(yyval.integer) = CREATE_VIEW_ACL;
	}
#line 17194 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1114:
#line 6538 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = DELETE_ACL;
	}
#line 17202 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1115:
#line 6541 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                     {
		(yyval.integer) = DROP_ACL;
	}
#line 17210 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1116:
#line 6544 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = EVENT_ACL;
	}
#line 17218 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1117:
#line 6547 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
		(yyval.integer) = EXECUTE_ACL;
	}
#line 17226 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1118:
#line 6550 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = FILE_ACL;
	}
#line 17234 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1119:
#line 6553 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                             {
		(yyval.integer) = GRANT_ACL;
	}
#line 17242 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1120:
#line 6556 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = INDEX_ACL;
	}
#line 17250 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1121:
#line 6559 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = INSERT_ACL;
	}
#line 17258 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1122:
#line 6562 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
		(yyval.integer) = LOCK_TABLES_ACL;
	}
#line 17266 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1123:
#line 6565 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
		(yyval.integer) = PROCESS_ACL;
	}
#line 17274 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1124:
#line 6568 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = PROXY_ACL;
	}
#line 17282 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1125:
#line 6571 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                           {
		(yyval.integer) = REFERENCES_ACL;
	}
#line 17290 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1126:
#line 6574 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = RELOAD_ACL;
	}
#line 17298 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1127:
#line 6577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                   {
		(yyval.integer) = REPL_CLIENT_ACL;
	}
#line 17306 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1128:
#line 6580 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                  {
		(yyval.integer) = REPL_SLAVE_ACL;
	}
#line 17314 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1129:
#line 6583 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = SELECT_ACL;
	}
#line 17322 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1130:
#line 6586 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                               {
		(yyval.integer) = SHOW_DB_ACL;
	}
#line 17330 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1131:
#line 6589 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                          {
		(yyval.integer) = SHOW_VIEW_ACL;
	}
#line 17338 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1132:
#line 6592 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                         {
		(yyval.integer) = SHUTDOWN_ACL;
	}
#line 17346 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1133:
#line 6595 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = SUPER_ACL;
	}
#line 17354 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1134:
#line 6598 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
		(yyval.integer) = TRIGGER_ACL;
	}
#line 17362 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1135:
#line 6601 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
		(yyval.integer) = UPDATE_ACL;
	}
#line 17370 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1136:
#line 6604 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                      {
		(yyval.integer) = NO_ACCESS_ACL;
	}
#line 17378 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1137:
#line 6610 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
        PrivLevel* priv_level = new_node(PrivLevel);
        priv_level->location = parser->get_location((yylsp[0]));
        priv_level->level = cantor::pb::ast::GRANT_LEVEL_DB;
        (yyval.priv_level) = priv_level;
    }
#line 17389 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1138:
#line 6616 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                  {
        PrivLevel* priv_level = new_node(PrivLevel);
        priv_level->location = parser->get_location((yylsp[-2]), (yyloc));
        priv_level->level = cantor::pb::ast::GRANT_LEVEL_GLOBAL;
        (yyval.priv_level) = priv_level;
    }
#line 17400 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1139:
#line 6622 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                       {
        PrivLevel* priv_level = new_node(PrivLevel);
        priv_level->location = parser->get_location((yylsp[-2]), (yyloc));
        priv_level->level = cantor::pb::ast::GRANT_LEVEL_DB;
        priv_level->db_name = (yyvsp[-2].string);
        (yyval.priv_level) = priv_level;
    }
#line 17412 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1140:
#line 6629 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
        PrivLevel* priv_level = new_node(PrivLevel);
        priv_level->location = parser->get_location((yylsp[-2]), (yyloc));
        priv_level->level = cantor::pb::ast::GRANT_LEVEL_TABLE;
        priv_level->db_name = (yyvsp[-2].string);
        priv_level->table_name = (yyvsp[0].string);
        (yyval.priv_level) = priv_level;
    }
#line 17425 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1141:
#line 6637 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        PrivLevel* priv_level = new_node(PrivLevel);
        priv_level->location = parser->get_location((yylsp[0]));
        priv_level->level = cantor::pb::ast::GRANT_LEVEL_TABLE;
        priv_level->table_name = (yyvsp[0].string);
        (yyval.priv_level) = priv_level;
    }
#line 17437 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1142:
#line 6647 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.integer) = false;
    }
#line 17445 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1143:
#line 6650 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
        (yyval.integer) = true;
    }
#line 17453 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1144:
#line 6662 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    auto expr = ConstantExpr::make_int("-1", parser->arena);
			    expr->location = parser->get_location((yylsp[-1]), (yylsp[0]));
			    (yyval.const_int_expr_list) = append_vector((yyvsp[-2].const_int_expr_list), expr, parser->arena);
            }
#line 17463 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1145:
#line 6668 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyvsp[-1].int_const_expr)->location = parser->get_location((yylsp[-1]));
			    (yyval.const_int_expr_list) = append_vector((yyvsp[-3].const_int_expr_list), (yyvsp[-1].int_const_expr), parser->arena);
            }
#line 17472 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1146:
#line 6673 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyval.const_int_expr_list) = nullptr;
			}
#line 17480 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1147:
#line 6680 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
			set_vector((yyvsp[-1].type_name)->array_bounds, (yyvsp[0].const_int_expr_list));
			(yyvsp[-1].type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
			(yyval.type_name) = (yyvsp[-1].type_name);
		}
#line 17490 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1148:
#line 6686 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
           auto type = TypeNameMap::make_typename(parser->arena);
           set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
           type->key = (yyvsp[-4].type_name);
           type->value = (yyvsp[-2].type_name);
           type->location = parser->get_location((yylsp[-6]), (yyloc));
           (yyval.type_name) = type;
        }
#line 17503 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1149:
#line 6695 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type = TypeNameSet::make_typename(parser->arena);
            set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
            type->key = (yyvsp[-2].type_name);
            type->location = parser->get_location((yylsp[-4]), (yyloc));
            (yyval.type_name) = type;

        }
#line 17516 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1150:
#line 6704 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
           auto type = TypeNameTuple::make_typename(parser->arena);
           set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
           set_vector(type->type_args, (yyvsp[-2].type_name_list));
           type->location = parser->get_location((yylsp[-4]), (yyloc));
           (yyval.type_name) = type;
        }
#line 17528 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1151:
#line 6712 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
           auto type = TypeNameUnion::make_typename(parser->arena);
           set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
           set_vector(type->type_args, (yyvsp[-2].named_type_list));
           type->location = parser->get_location((yylsp[-4]), (yyloc));
           (yyval.type_name) = type;
        }
#line 17540 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1152:
#line 6720 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
           auto type = TypeNameStruct::make_typename(parser->arena);
           set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
           set_vector(type->type_args, (yyvsp[-2].named_type_list));
           type->location = parser->get_location((yylsp[-4]), (yyloc));
           (yyval.type_name) = type;
        }
#line 17552 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1153:
#line 6728 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
           auto type = TypeNameProto::make_typename(parser->arena);
           set_vector(type->array_bounds, (yyvsp[0].const_int_expr_list));
           type->uri = (yyvsp[-2].string_const_expr);
           type->location = parser->get_location((yylsp[-4]), (yyloc));
           (yyval.type_name) = type;
        }
#line 17564 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1154:
#line 6736 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type = TypeNameEnum::make_typename(parser->arena);
            type->uri = (yyvsp[-3].type_name_uri);
            set_vector(type->type_args, (yyvsp[-1].enum_element_list));
            type->location = parser->get_location((yylsp[-4]), (yyloc));
            (yyval.type_name) = type;

        }
#line 17577 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1155:
#line 6746 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                { (yyval.string) = (yyvsp[0].string); }
#line 17583 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1156:
#line 6750 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(NamedType);
                node->name = (yyvsp[-1].string);
                node->type = (yyvsp[0].type_name);
                node->location = parser->get_location((yylsp[-1]), (yyloc));
                (yyval.named_type_list) = append_vector<NamedType*>(nullptr, node, parser->arena);
            }
#line 17595 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1157:
#line 6758 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto node = new_node(NamedType);
                node->name = (yyvsp[-1].string);
                node->type = (yyvsp[0].type_name);
                node->location = parser->get_location((yylsp[-1]), (yyloc));
                (yyval.named_type_list) = append_vector<NamedType*>((yyvsp[-3].named_type_list), node, parser->arena);
            }
#line 17607 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1158:
#line 6766 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                        { (yyval.type_name_list) = append_vector<TypeStmt*>(nullptr, (yyvsp[0].type_name), parser->arena); }
#line 17613 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1159:
#line 6767 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                { (yyval.type_name_list) = append_vector<TypeStmt*>((yyvsp[-2].type_name_list), (yyvsp[0].type_name), parser->arena ); }
#line 17619 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1160:
#line 6772 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17627 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1161:
#line 6776 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17635 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1162:
#line 6780 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17643 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1163:
#line 6784 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17651 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1164:
#line 6794 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17659 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1165:
#line 6798 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = (yyvsp[0].type_name);
        }
#line 17667 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1166:
#line 6802 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_BOOL, parser->arena);
            type->location = parser->get_location((yylsp[0]));
            (yyval.type_name) = type;
        }
#line 17677 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1167:
#line 6808 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_DECIMAL, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17687 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1168:
#line 6814 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_DECIMAL, parser->arena);
            set_vector((yyval.type_name)->typmods,  (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17697 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1169:
#line 6823 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F8, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17708 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1170:
#line 6830 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F16, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17719 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1171:
#line 6837 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F32, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17730 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1172:
#line 6844 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F64, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17741 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1173:
#line 6851 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F32, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17752 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1174:
#line 6858 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F64, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17763 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1175:
#line 6865 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F64, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-2]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17774 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1176:
#line 6872 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto type  = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_F64, parser->arena);
            set_vector(type->typmods, (yyvsp[0].cexpr_list));
            type->location = parser->get_location((yylsp[-1]), (yyloc));
            (yyval.type_name) = type;
        }
#line 17785 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1177:
#line 6882 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17795 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1178:
#line 6888 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT8, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17805 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1179:
#line 6894 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT16, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17815 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1180:
#line 6900 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17825 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1181:
#line 6906 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT64, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17835 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1182:
#line 6912 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT128, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17845 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1183:
#line 6918 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17855 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1184:
#line 6924 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT8, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17865 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1185:
#line 6930 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT16, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17875 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1186:
#line 6936 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17885 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1187:
#line 6942 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT64, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17895 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1188:
#line 6948 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT128, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17905 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1189:
#line 6954 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 32 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17916 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1190:
#line 6961 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 32 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[-1].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-2]), (yyloc));
        }
#line 17927 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1191:
#line 6968 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 8 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT8, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17938 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1192:
#line 6975 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 8 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT8, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[-1].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-2]), (yyloc));
        }
#line 17949 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1193:
#line 6982 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 16 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT16, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17960 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1194:
#line 6989 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 16 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT16, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[-1].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-2]), (yyloc));
        }
#line 17971 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1195:
#line 6996 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 32 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 17982 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1196:
#line 7003 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 32 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT32, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[-1].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-2]), (yyloc));
        }
#line 17993 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1197:
#line 7010 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 64 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_INT64, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-1]), (yyloc));
        }
#line 18004 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1198:
#line 7017 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            /// 64 bits
            (yyval.type_name) = TypeNameNumeric::make_typename(cantor::pb::ast::NumericType::NT_UINT64, parser->arena);
            set_vector((yyval.type_name)->typmods, (yyvsp[-1].cexpr_list));
            (yyval.type_name)->location = parser->get_location((yylsp[-2]), (yyloc));
        }
#line 18015 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1199:
#line 7027 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameDateTime::make_typename(parser->arena);
        set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
        type->precision = cantor::pb::ast::TimeStampPrecision::TS_NANO;
        type->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18027 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1200:
#line 7035 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameDateTime::make_typename(parser->arena);
        set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
        type->precision = (yyvsp[-1].timestamp_precision);
        type->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18039 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1201:
#line 7043 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameInterval::make_typename( parser->arena);
        set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
        type->precision = cantor::pb::ast::TimeStampPrecision::TS_NANO;
        type->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18051 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1202:
#line 7051 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameInterval::make_typename( parser->arena);
        set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
         type->precision = (yyvsp[-1].timestamp_precision);
        type->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18063 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1203:
#line 7059 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameTimestamp::make_typename( parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->precision = cantor::pb::ast::TimeStampPrecision::TS_NANO;
        type->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18075 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1204:
#line 7067 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameTimestamp::make_typename( parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->precision = (yyvsp[-1].timestamp_precision);
        type->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18087 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1205:
#line 7075 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameDuration::make_typename( parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->precision = cantor::pb::ast::TimeStampPrecision::TS_NANO;
        type->location = parser->get_location((yylsp[-1]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18099 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1206:
#line 7083 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameDuration::make_typename( parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->precision = (yyvsp[-1].timestamp_precision);
        type->location = parser->get_location((yylsp[-2]), (yyloc));
        (yyval.type_name) = type;
    }
#line 18111 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1207:
#line 7093 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_NANO;
    }
#line 18119 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1208:
#line 7097 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_MICRO;
    }
#line 18127 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1209:
#line 7101 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_MILLI;
    }
#line 18135 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1210:
#line 7105 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_SECOND;
    }
#line 18143 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1211:
#line 7110 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
               {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_NANO;
    }
#line 18151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1212:
#line 7114 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_MICRO;
    }
#line 18159 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1213:
#line 7118 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_MILLI;
    }
#line 18167 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1214:
#line 7122 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_SECOND;
    }
#line 18175 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1215:
#line 7126 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_MINUTE;
    }
#line 18183 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1216:
#line 7130 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_HOUR;
    }
#line 18191 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1217:
#line 7134 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.timestamp_precision) = cantor::pb::ast::TimeStampPrecision::TS_DAY;
    }
#line 18199 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1218:
#line 7141 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameString::make_typename(false, parser->arena);
        set_vector(type->typmods, (yyvsp[-2].cexpr_list));
        type->charset = (yyvsp[-1].string);
        type->collate = (yyvsp[0].string);
        type->location = parser->get_location((yylsp[-4]), (yyloc));
        (yyval.type_name) = type;

    }
#line 18213 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1219:
#line 7151 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameString::make_typename(false, parser->arena);
        set_vector(type->typmods, (yyvsp[-2].cexpr_list));
        type->charset = (yyvsp[-1].string);
        type->collate = (yyvsp[0].string);
        type->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.type_name) = type;

    }
#line 18227 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1220:
#line 7161 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameString::make_typename(true, parser->arena);
        set_vector(type->typmods, (yyvsp[-2].cexpr_list));
        type->charset = (yyvsp[-1].string);
        type->collate = (yyvsp[0].string);
        type->location = parser->get_location((yylsp[-4]), (yyloc));
        (yyval.type_name) = type;

    }
#line 18241 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1221:
#line 7171 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameString::make_typename(true, parser->arena);
        set_vector(type->typmods, (yyvsp[-2].cexpr_list));
        type->charset = (yyvsp[-1].string);
        type->collate = (yyvsp[0].string);
        type->location = parser->get_location((yylsp[-3]), (yyloc));
        (yyval.type_name) = type;

    }
#line 18255 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1222:
#line 7181 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameJson::make_typename(parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->location = parser->get_location((yylsp[-1]));
        (yyval.type_name) = type;
    }
#line 18266 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1223:
#line 7188 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameHll::make_typename(parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->location = parser->get_location((yylsp[-1]));
        (yyval.type_name) = type;
    }
#line 18277 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1224:
#line 7195 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameBitmap::make_typename(parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->location = parser->get_location((yylsp[-1]));
        (yyval.type_name) = type;
    }
#line 18288 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1225:
#line 7202 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        auto type = TypeNameTdigest::make_typename(parser->arena);
        set_vector(type->typmods, (yyvsp[0].cexpr_list));
        type->location = parser->get_location((yylsp[-1]));
        (yyval.type_name) = type;
    }
#line 18299 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1226:
#line 7218 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                auto type = TypeNameGeneric::make_typename((yyvsp[-1].string), parser->arena);
                set_vector((yyval.type_name)->typmods, (yyvsp[0].cexpr_list));
                type->location = parser->get_location((yylsp[-1]), (yyloc));
                (yyval.type_name) = type;
            }
#line 18310 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1227:
#line 7227 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
           {}
#line 18316 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1228:
#line 7231 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                {
				    (yyval.cexpr_list) = (yyvsp[-1].cexpr_list);
				}
#line 18324 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1229:
#line 7235 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                            {
			        (yyval.cexpr_list) = nullptr;
			    }
#line 18332 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1230:
#line 7242 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.cexpr_list) = (yyvsp[0].cexpr_list);
            }
#line 18340 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1231:
#line 7246 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.cexpr_list) = nullptr;
            }
#line 18348 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1232:
#line 7253 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.cexpr_list) = (yyvsp[0].cexpr_list);
            }
#line 18356 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1233:
#line 7258 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.cexpr_list) = (yyvsp[-1].cexpr_list);
            }
#line 18364 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1234:
#line 7264 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyval.cexpr_list) = append_vector<ConstantExpr*>(nullptr, (yyvsp[0].cexpr), parser->arena);
            }
#line 18372 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1235:
#line 7268 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
                (yyvsp[-2].cexpr_list)->push_back((yyvsp[0].cexpr), parser->arena);
                (yyval.cexpr_list) = (yyvsp[-2].cexpr_list);
            }
#line 18381 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1236:
#line 7276 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.cexpr)->location = parser->get_location((yylsp[0]));
            (yyval.cexpr) = (yyvsp[0].int_const_expr);
        }
#line 18390 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1237:
#line 7281 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.cexpr)->location = parser->get_location((yylsp[0]));
            (yyval.cexpr) = (yyvsp[0].string_const_expr);
        }
#line 18399 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1238:
#line 7289 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
		    auto node = new_node(MapPair);
		    node->key = (yyvsp[-3].expr);
		    node->value = (yyvsp[-1].expr);
		    node->location = parser->get_location((yylsp[-4]), (yyloc));
		    (yyval.map_pair) = node;
		}
#line 18411 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1239:
#line 7297 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto node = new_node(MapPair);
            node->key = (yyvsp[-2].expr);
            node->value = (yyvsp[0].expr);
            node->location = parser->get_location((yylsp[-2]), (yyloc));
            (yyval.map_pair) = node;
        }
#line 18423 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1240:
#line 7307 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyval.map_pair_list) = append_vector<MapPair*>(nullptr, (yyvsp[0].map_pair), parser->arena);
			}
#line 18431 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1241:
#line 7311 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyvsp[-2].map_pair_list)->push_back((yyvsp[0].map_pair), parser->arena);
			    (yyval.map_pair_list) = (yyvsp[-2].map_pair_list);
			}
#line 18440 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1242:
#line 7317 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                        { (yyval.map_pair_list) = (yyvsp[0].map_pair_list); }
#line 18446 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1243:
#line 7318 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                                                                                        { (yyval.map_pair_list) = (yyvsp[-1].map_pair_list); }
#line 18452 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1244:
#line 7323 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyval.map_pair_list) = (yyvsp[0].map_pair_list);
			}
#line 18460 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1245:
#line 7327 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                        {
			    (yyval.map_pair_list) = nullptr;
			}
#line 18468 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1246:
#line 7334 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
            {
		    auto node = new_node(DictPair);
		    node->name = (yyvsp[-2].string);
		    node->value = (yyvsp[0].expr);
		    node->location = parser->get_location((yylsp[-2]), (yyloc));
		    (yyval.dict_pair) = node;
	    }
#line 18480 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1247:
#line 7343 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        { (yyval.dict_pair) = nullptr; }
#line 18486 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1248:
#line 7345 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.dict_pair) = (yyvsp[0].dict_pair);
        }
#line 18494 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1249:
#line 7350 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.dict_pair_list) = append_vector<DictPair*>(nullptr, (yyvsp[0].dict_pair), parser->arena);
        }
#line 18502 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1250:
#line 7354 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyvsp[-2].dict_pair_list)->push_back((yyvsp[0].dict_pair), parser->arena);
            (yyval.dict_pair_list) = (yyvsp[-2].dict_pair_list);
        }
#line 18511 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1251:
#line 7361 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.dict_pair_list) = (yyvsp[0].dict_pair_list);
        }
#line 18519 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1252:
#line 7365 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
             (yyval.dict_pair_list) = (yyvsp[-1].dict_pair_list);
        }
#line 18527 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1253:
#line 7371 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.dict_pair_list) = (yyvsp[0].dict_pair_list);
        }
#line 18535 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1254:
#line 7375 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.dict_pair_list) = nullptr;
        }
#line 18543 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1255:
#line 7383 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
		    (yyval.expr_list) = append_vector<DispatchExpr*>(nullptr, (yyvsp[0].expr), parser->arena);
		}
#line 18551 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1256:
#line 7387 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
		    (yyvsp[-2].expr_list)->push_back((yyvsp[0].expr), parser->arena);
		    (yyval.expr_list) = (yyvsp[-2].expr_list);
		}
#line 18560 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1257:
#line 7395 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
		    (yyval.expr_list) = (yyvsp[0].expr_list);
		}
#line 18568 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1258:
#line 7399 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
                {
		    (yyval.expr_list) = (yyvsp[-1].expr_list);
		}
#line 18576 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1259:
#line 7406 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.expr_list) = (yyvsp[0].expr_list);
        }
#line 18584 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1260:
#line 7410 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.expr_list) = nullptr;
         }
#line 18592 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1261:
#line 7417 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
        }
#line 18600 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1262:
#line 7421 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.string) = (yyvsp[0].string);
        }
#line 18608 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1263:
#line 7427 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.int_const_expr) = (yyvsp[0].int_const_expr);
    }
#line 18616 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1264:
#line 7431 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.int_const_expr) = nullptr;
    }
#line 18624 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1265:
#line 7437 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
             auto node = new_node(EnumElement);
             node->name = (yyvsp[-1].string);
             node->value = (yyvsp[0].int_const_expr);
             node->location = parser->get_location((yylsp[-1]), (yyloc));
             (yyval.enum_element) = node;
        }
#line 18636 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1266:
#line 7447 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
             (yyval.enum_element_list) = append_vector<EnumElement*>(nullptr, (yyvsp[0].enum_element), parser->arena, 10);
        }
#line 18644 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1267:
#line 7451 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyvsp[-2].enum_element_list)->push_back((yyvsp[0].enum_element), parser->arena);
            (yyval.enum_element_list) = (yyvsp[-2].enum_element_list);
        }
#line 18653 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1268:
#line 7459 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.enum_element_list) = (yyvsp[0].enum_element_list);
        }
#line 18661 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1269:
#line 7463 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            (yyval.enum_element_list) = (yyvsp[-1].enum_element_list);
        }
#line 18669 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1270:
#line 7469 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 18677 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1271:
#line 7473 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 18685 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1272:
#line 7480 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val;
    }
#line 18693 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1273:
#line 7484 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 18701 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1274:
#line 7490 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = nullptr;
    }
#line 18709 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1275:
#line 7494 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.string) = (yyvsp[0].string);
    }
#line 18717 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1276:
#line 7501 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto node = new_node(CreateTypeStmt);
            node->uri = (yyvsp[-2].type_name_uri);
            node->type_name = (yyvsp[0].type_name);
            node->is_try = (yyvsp[-4].integer);
            node->scope_type = (yyvsp[-3].type_scope);
            node->location = parser->get_location((yylsp[-6]), (yyloc));
            (yyval.stmt) = node;

        }
#line 18732 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1277:
#line 7512 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto node = new_node(CreateTypeStmt);
            node->uri = (yyvsp[-3].type_name_uri);
            node->proto = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val.c_str();
            node->is_try = (yyvsp[-5].integer);
            node->scope_type = (yyvsp[-4].type_scope);
            node->location = parser->get_location((yylsp[-7]), (yyloc));
            (yyval.stmt) = node;
        }
#line 18746 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1278:
#line 7522 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
        {
            auto node = new_node(CreateTypeStmt);
            node->uri = (yyvsp[-3].type_name_uri);
            node->json = ((ConstantExpr*)(yyvsp[0].string_const_expr))->_u.str_val.c_str();
            node->is_try = (yyvsp[-5].integer);
            node->scope_type = (yyvsp[-4].type_scope);
            node->location = parser->get_location((yylsp[-7]), (yyloc));
            (yyval.stmt) = node;

        }
#line 18761 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1279:
#line 7535 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.type_scope) = cantor::pb::ast::TypeScope::TS_GLOBAL;
    }
#line 18769 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1280:
#line 7539 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.type_scope) = cantor::pb::ast::TypeScope::TS_NAMESPACE;
    }
#line 18777 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1281:
#line 7543 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.type_scope) = cantor::pb::ast::TypeScope::TS_DATABASE;
    }
#line 18785 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1282:
#line 7547 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.type_scope) = cantor::pb::ast::TypeScope::TS_TABLE;
    }
#line 18793 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;

  case 1283:
#line 7551 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"
    {
        (yyval.type_scope) = cantor::pb::ast::TypeScope::TS_TABLE;
    }
#line 18801 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"
    break;


#line 18805 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.cc"

      default: break;
    }
  /* User semantic actions sometimes alter yychar, and that requires
     that yytoken be updated with the new translation.  We take the
     approach of translating immediately before every use of yytoken.
     One alternative is translating here after every semantic action,
     but that translation would be missed if the semantic action invokes
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
     incorrect destructor might then be invoked immediately.  In the
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
     to an incorrect destructor call or verbose syntax error message
     before the lookahead is translated.  */
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);

  *++yyvsp = yyval;
  *++yylsp = yyloc;

  /* Now 'shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */
  {
    const int yylhs = yyr1[yyn] - YYNTOKENS;
    const int yyi = yypgoto[yylhs] + *yyssp;
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
               ? yytable[yyi]
               : yydefgoto[yylhs]);
  }

  goto yynewstate;


/*--------------------------------------.
| yyerrlab -- here on detecting error.  |
`--------------------------------------*/
yyerrlab:
  /* Make sure we have latest lookahead translation.  See comments at
     user semantic actions for why this is necessary.  */
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);

  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
#if ! YYERROR_VERBOSE
      yyerror (&yylloc, yyscanner, parser, YY_("syntax error"));
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
                                        yyssp, yytoken)
      {
        char const *yymsgp = YY_("syntax error");
        int yysyntax_error_status;
        yysyntax_error_status = YYSYNTAX_ERROR;
        if (yysyntax_error_status == 0)
          yymsgp = yymsg;
        else if (yysyntax_error_status == 1)
          {
            if (yymsg != yymsgbuf)
              YYSTACK_FREE (yymsg);
            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
            if (!yymsg)
              {
                yymsg = yymsgbuf;
                yymsg_alloc = sizeof yymsgbuf;
                yysyntax_error_status = 2;
              }
            else
              {
                yysyntax_error_status = YYSYNTAX_ERROR;
                yymsgp = yymsg;
              }
          }
        yyerror (&yylloc, yyscanner, parser, yymsgp);
        if (yysyntax_error_status == 2)
          goto yyexhaustedlab;
      }
# undef YYSYNTAX_ERROR
#endif
    }

  yyerror_range[1] = yylloc;

  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */

      if (yychar <= YYEOF)
        {
          /* Return failure if at end of input.  */
          if (yychar == YYEOF)
            YYABORT;
        }
      else
        {
          yydestruct ("Error: discarding",
                      yytoken, &yylval, &yylloc, yyscanner, parser);
          yychar = YYEMPTY;
        }
    }

  /* Else will try to reuse lookahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:
  /* Pacify compilers when the user code never invokes YYERROR and the
     label yyerrorlab therefore never appears in user code.  */
  if (0)
    YYERROR;

  /* Do not reclaim the symbols of the rule whose action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */

  for (;;)
    {
      yyn = yypact[yystate];
      if (!yypact_value_is_default (yyn))
        {
          yyn += YYTERROR;
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
            {
              yyn = yytable[yyn];
              if (0 < yyn)
                break;
            }
        }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
        YYABORT;

      yyerror_range[1] = *yylsp;
      yydestruct ("Error: popping",
                  yystos[yystate], yyvsp, yylsp, yyscanner, parser);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END

  yyerror_range[2] = yylloc;
  /* Using YYLLOC is tempting, but would change the location of
     the lookahead.  YYLOC is available though.  */
  YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
  *++yylsp = yyloc;

  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;


/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;


#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here.  |
`-------------------------------------------------*/
yyexhaustedlab:
  yyerror (&yylloc, yyscanner, parser, YY_("memory exhausted"));
  yyresult = 2;
  /* Fall through.  */
#endif


/*-----------------------------------------------------.
| yyreturn -- parsing is finished, return the result.  |
`-----------------------------------------------------*/
yyreturn:
  if (yychar != YYEMPTY)
    {
      /* Make sure we have latest lookahead translation.  See comments at
         user semantic actions for why this is necessary.  */
      yytoken = YYTRANSLATE (yychar);
      yydestruct ("Cleanup: discarding lookahead",
                  yytoken, &yylval, &yylloc, yyscanner, parser);
    }
  /* Do not reclaim the symbols of the rule whose action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
                  yystos[+*yyssp], yyvsp, yylsp, yyscanner, parser);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
#if YYERROR_VERBOSE
  if (yymsg != yymsgbuf)
    YYSTACK_FREE (yymsg);
#endif
  return yyresult;
}
#line 7592 "/home/jeff/gitee/kumo-pub/cantor/cantor/parser/grammar/grammar.y"

int sql_error(YYLTYPE* yylloc, yyscan_t yyscanner, SqlParser *parser, const char *s) {    
    parser->error = cantor::parser::SYNTAX_ERROR;
    std::ostringstream os;
    auto loc = parser->get_location(*yylloc);
    os << s << ", near '" << std::string(yylloc->start, yylloc->end - yylloc->start);
    os << "' key:" << sql_get_text(yyscanner)<<", location:["<<loc.location<<":"<<loc.len<<"]";
    parser->syntax_err_str = os.str();
    return 1;
    //printf("sql_error");
}

